From eb7d5627e12970b3d3f2260d5f4ba90ef3ba42f9 Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Sat, 14 Jan 1995 06:21:30 +0000 Subject: [PATCH] (INIT_CUMULATIVE_INCOMING_ARGS): Reserve two regs for caller's lr0,lr1. From-SVN: r8758 --- gcc/config/a29k/a29k.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/gcc/config/a29k/a29k.h b/gcc/config/a29k/a29k.h index 25b5d29..37abee5 100644 --- a/gcc/config/a29k/a29k.h +++ b/gcc/config/a29k/a29k.h @@ -777,19 +777,21 @@ extern struct rtx_def *a29k_get_reloaded_address (); /* Same, but called for incoming args. On the 29k, we use this to set all argument registers to fixed and - set the last 16 local regs (lr112-lr127) to available. Some - will later be changed to call-saved by FUNCTION_INCOMING_ARG. */ + set the last 16 local regs, less two, (lr110-lr125) to available. Some + will later be changed to call-saved by FUNCTION_INCOMING_ARG. + lr126,lr127 are always fixed, they are place holders for the caller's + lr0,lr1. */ -#define INIT_CUMULATIVE_INCOMING_ARGS(CUM,FNTYPE,IGNORE) \ +#define INIT_CUMULATIVE_INCOMING_ARGS(CUM,FNTYPE,IGNORE) \ { int i; \ - for (i = R_AR (0); i < R_AR (16); i++) \ + for (i = R_AR (0) - 2; i < R_AR (16); i++) \ { \ fixed_regs[i] = call_used_regs[i] = call_fixed_regs[i] = 1; \ SET_HARD_REG_BIT (fixed_reg_set, i); \ SET_HARD_REG_BIT (call_used_reg_set, i); \ SET_HARD_REG_BIT (call_fixed_reg_set, i); \ } \ - for (i = R_LR (112); i < R_LR (128); i++) \ + for (i = R_LR (110); i < R_LR (126); i++) \ { \ fixed_regs[i] = call_used_regs[i] = call_fixed_regs[i] = 0; \ CLEAR_HARD_REG_BIT (fixed_reg_set, i); \ -- 2.7.4