From 941df33c8cc9f2efdbcb2211b50a4a95f2eee4c2 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Wed, 21 Dec 1994 15:55:21 -0500 Subject: [PATCH] (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 --- gcc/config/clipper/clipper.h | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/gcc/config/clipper/clipper.h b/gcc/config/clipper/clipper.h index 385bfb0c51c..1f66de9401b 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. */ -- 2.30.2