diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-12-21 15:55:21 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-12-21 15:55:21 -0500 |
commit | 941df33c8cc9f2efdbcb2211b50a4a95f2eee4c2 (patch) | |
tree | 3954f6c346942db885fad05e6d90084072df8b5f /gcc | |
parent | 67591ff34b6dfc445933b876c1b51b3728ebb6e7 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/clipper/clipper.h | 15 |
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. */ |