From d06cca55f5271fddbc8a156299d800c7073a1871 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Fri, 28 Oct 1994 19:07:48 -0400 Subject: [PATCH] (TRAMPOLINE_SIZE): Install real implementation. (INITIALIZE_TRAMPOLINE, TRAMPOLINE_TEMPLATE): Likewise. From-SVN: r8356 --- gcc/config/pdp11/pdp11.h | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/gcc/config/pdp11/pdp11.h b/gcc/config/pdp11/pdp11.h index 4ae42034c45..b0cab19fa4a 100644 --- a/gcc/config/pdp11/pdp11.h +++ b/gcc/config/pdp11/pdp11.h @@ -1242,19 +1242,38 @@ fprintf (FILE, "$help$: . = .+8 ; space for tmp moves!\n") \ #define ASM_OUTPUT_DOUBLE_INT(a,b) fprintf(a,"%d", b) -/* trampoline - how should i do it in separate i+d ? */ -#define TRAMPOLINE_SIZE 0 +/* trampoline - how should i do it in separate i+d ? + have some allocate_trampoline magic??? -#define INITIALIZE_TRAMPOLINE(x,y,z) \ + the following should work for shared I/D: */ + +/* lets see whether this works as trampoline: +MV #STATIC, $4 0x940Y 0x0000 <- STATIC; Y = STATIC_CHAIN_REGNUM +JMP FUNCTION 0x0058 0x0000 <- FUNCTION +*/ + +#define TRAMPOLINE_TEMPLATE(FILE) \ { \ -abort(); \ + ASM_OUTPUT_INT (FILE, gen_rtx(CONST_INT, VOIDmode, 0x9400+STATIC_CHAIN_REGNUM)); \ + ASM_OUTPUT_INT (FILE, const0_rtx); \ + ASM_OUTPUT_INT (FILE, gen_rtx(CONST_INT, VOIDmode, 0x0058)); \ + ASM_OUTPUT_INT (FILE, const0_rtx); \ } -#define TRAMPOLINE_TEMPLATE(FILE) \ +#define TRAMPOLINE_SIZE 8 +#define TRAMPOLINE_ALIGN 16 + +/* Emit RTL insns to initialize the variable parts of a trampoline. + FNADDR is an RTX for the address of the function's pure code. + CXT is an RTX for the static chain value for the function. */ + +#define INITIALIZE_TRAMPOLINE(TRAMP,FNADDR,CXT) \ { \ -abort(); \ + emit_move_insn (gen_rtx (MEM, HImode, plus_constant (TRAMP, 2)), CXT); \ + emit_move_insn (gen_rtx (MEM, HImode, plus_constant (TRAMP, 6)), FNADDR); \ } + /* Some machines may desire to change what optimizations are performed for various optimization levels. This macro, if defined, is executed once just after the optimization level is -- 2.30.2