aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Evans <dje@gnu.org>1995-01-14 06:21:30 +0000
committerDoug Evans <dje@gnu.org>1995-01-14 06:21:30 +0000
commiteb7d5627e12970b3d3f2260d5f4ba90ef3ba42f9 (patch)
treecb111804ea52d582c860cb4564c7f4459ed73853
parent23c97802de08d6bcc8574673ad15e667f76fc063 (diff)
downloadgcc-eb7d5627e12970b3d3f2260d5f4ba90ef3ba42f9.zip
gcc-eb7d5627e12970b3d3f2260d5f4ba90ef3ba42f9.tar.gz
gcc-eb7d5627e12970b3d3f2260d5f4ba90ef3ba42f9.tar.bz2
(INIT_CUMULATIVE_INCOMING_ARGS): Reserve two regs for caller's lr0,lr1.
From-SVN: r8758
-rw-r--r--gcc/config/a29k/a29k.h12
1 files 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); \