(INITIALIZE_TRAMPOLINE): Get function address and toc pointer from

correct place relative to FNADDR.

From-SVN: r2890
This commit is contained in:
Richard Kenner 1992-12-16 19:23:52 -05:00
parent 58055e406c
commit 858b728c99
1 changed files with 12 additions and 6 deletions

View File

@ -851,14 +851,20 @@ struct rs6000_args {int words, fregno, nargs_prototype; };
#define INITIALIZE_TRAMPOLINE(ADDR, FNADDR, CXT) \
{ \
emit_move_insn (gen_rtx (MEM, SImode, memory_address (SImode, ADDR)), \
force_reg (SImode, FNADDR)); \
emit_move_insn (gen_rtx (MEM, SImode, \
memory_address (SImode, plus_constant (ADDR, 4))), \
gen_rtx (REG, SImode, 2)); \
memory_address (SImode, (ADDR))), \
gen_rtx (MEM, SImode, \
memory_address (SImode, (FNADDR)))); \
emit_move_insn (gen_rtx (MEM, SImode, \
memory_address (SImode, plus_constant (ADDR, 8))), \
force_reg (SImode, CXT)); \
memory_address (SImode, \
plus_constant ((ADDR), 4))), \
gen_rtx (MEM, SImode, \
memory_address (SImode, \
plus_constant ((FNADDR), 4)))); \
emit_move_insn (gen_rtx (MEM, SImode, \
memory_address (SImode, \
plus_constant ((ADDR), 8))), \
force_reg (SImode, (CXT))); \
}
/* Definitions for register eliminations.