aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-12-21 15:55:21 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1994-12-21 15:55:21 -0500
commit941df33c8cc9f2efdbcb2211b50a4a95f2eee4c2 (patch)
tree3954f6c346942db885fad05e6d90084072df8b5f
parent67591ff34b6dfc445933b876c1b51b3728ebb6e7 (diff)
downloadgcc-941df33c8cc9f2efdbcb2211b50a4a95f2eee4c2.zip
gcc-941df33c8cc9f2efdbcb2211b50a4a95f2eee4c2.tar.gz
gcc-941df33c8cc9f2efdbcb2211b50a4a95f2eee4c2.tar.bz2
(TRAMPOLINE_TEMPLATE): Specify some code as explicit hex words.
Shorten template. (TRAMPOLINE_SIZE,INITIALIZE_TRAMPOLINE): Update accordingly. (FUNCTION_ARG,FUNCTION_ARG_ADVANCE): Aggregates are ALWAYS passed on the stack. From-SVN: r8687
-rw-r--r--gcc/config/clipper/clipper.h15
1 files changed, 9 insertions, 6 deletions
diff --git a/gcc/config/clipper/clipper.h b/gcc/config/clipper/clipper.h
index 385bfb0..1f66de9 100644
--- a/gcc/config/clipper/clipper.h
+++ b/gcc/config/clipper/clipper.h
@@ -483,6 +483,7 @@ do \
if ((CUM).num < 2 \
&& (GET_MODE_CLASS(MODE)==MODE_INT || GET_MODE_CLASS(MODE)==MODE_FLOAT) \
&& (GET_MODE_SIZE (MODE) <= 8) \
+ && ((TYPE) == NULL || !AGGREGATE_TYPE_P(TYPE)) \
&& ((MODE) != DImode || (CUM).num == 0)) \
{ \
reg = 1; \
@@ -522,6 +523,7 @@ do \
(((CUM).num < 2 \
&& (GET_MODE_CLASS(MODE)==MODE_INT || GET_MODE_CLASS(MODE)==MODE_FLOAT) \
&& (GET_MODE_SIZE (MODE) <= 8) \
+ && ((TYPE) == NULL || !AGGREGATE_TYPE_P(TYPE)) \
&& ((MODE) != DImode || (CUM).num == 0)) \
? gen_rtx (REG, (MODE), \
GET_MODE_CLASS(MODE) == MODE_FLOAT ? (CUM).num+16 : (CUM).num) \
@@ -600,17 +602,18 @@ do \
#define TRAMPOLINE_TEMPLATE(FILE) \
{ \
- fputs ("\tcall sp,.+4\n", FILE); \
+ fputs ("\t.word 0x459F,0x0004\t# call sp,.+4\n", FILE); \
fputs ("\tmovw (sp),r3\n", FILE); \
fputs ("\taddq $4,sp\n", FILE); \
- fputs ("\tloadw 32(r3),r2\n", FILE); \
- fputs ("\tloadw 36(r3),r3\n", FILE); \
+ fputs ("\tloadw 20(r3),r2\n", FILE); \
+ fputs ("\tloadw 24(r3),r3\n", FILE); \
fputs ("\tb (r3)\n", FILE); \
+ fputs ("\t.long 0,0\n", FILE); \
}
/* Length in units of the trampoline for entering a nested function. */
-#define TRAMPOLINE_SIZE 44
+#define TRAMPOLINE_SIZE 32
/* Alignment required for a trampoline. 128 is used to find the
beginning of a line in the instruction cache and to allow for
@@ -628,8 +631,8 @@ do \
#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \
{ \
- emit_move_insn (gen_rtx (MEM, SImode, plus_constant (TRAMP, 36)), CXT); \
- emit_move_insn (gen_rtx (MEM, SImode, plus_constant (TRAMP, 40)), FNADDR); \
+ emit_move_insn (gen_rtx (MEM, SImode, plus_constant (TRAMP, 24)), CXT); \
+ emit_move_insn (gen_rtx (MEM, SImode, plus_constant (TRAMP, 28)), FNADDR); \
}
/* Addressing modes, and classification of registers for them. */