/* loop over all parameters and determine whether its a int or float register parameter */
for (i = 0; i < nr && !done && (cc & cc_reg_param); i++) {
- if (mode_is_int(modes[i]) && cur_gp_idx < maxnum_gpreg_args) {
+ if ((mode_is_int(modes[i]) || mode_is_reference(modes[i])) && cur_gp_idx < maxnum_gpreg_args) {
/* param can be passed in general purpose register and we have some registers left */
cur_gp_idx++;
}
}
/* now: i == nr, that's the parameter requirement we want */
- if (mode_is_int(modes[i]) && cur_gp_idx < maxnum_gpreg_args) {
+ if ((mode_is_int(modes[i]) || mode_is_reference(modes[i])) && cur_gp_idx < maxnum_gpreg_args) {
/* parameter #nr can be passed in general purpose register */
param_reg = current_gpreg_param_reg[i];
}