diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1992-12-16 19:23:52 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1992-12-16 19:23:52 -0500 |
commit | 858b728c999c4197c08c82e00c4098546c7bc635 (patch) | |
tree | 180473f60a0fac73be6adc574edf0e2e8e3e14bd /gcc | |
parent | 58055e406c0accb1de58e5faed8b3b86cdffd758 (diff) | |
download | gcc-858b728c999c4197c08c82e00c4098546c7bc635.zip gcc-858b728c999c4197c08c82e00c4098546c7bc635.tar.gz gcc-858b728c999c4197c08c82e00c4098546c7bc635.tar.bz2 |
(INITIALIZE_TRAMPOLINE): Get function address and toc pointer from
correct place relative to FNADDR.
From-SVN: r2890
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index ae8275f..e6ecd4c 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -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. |