From c6e0562af5d8c086ad2f4d3a314c88a8bbd4131e Mon Sep 17 00:00:00 2001 From: rth Date: Wed, 1 Sep 2004 19:41:40 +0000 Subject: [PATCH] * config/ns32k/ns32k.h (TRANSFER_FROM_TRAMPOLINE): Remove. (TRAMPOLINE_TEMPLATE): Merge code from __trampoline inline. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86922 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/ns32k/ns32k.h | 45 ++++++++++++++++----------------------------- 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7df405e..220d75d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-09-01 Richard Henderson + + * config/ns32k/ns32k.h (TRANSFER_FROM_TRAMPOLINE): Remove. + (TRAMPOLINE_TEMPLATE): Merge code from __trampoline inline. + 2004-09-01 Jakub Jelinek * libgcc-std.ver (GCC_3.4.2): Export also __trampoline_setup. diff --git a/gcc/config/ns32k/ns32k.h b/gcc/config/ns32k/ns32k.h index a5819f4..93b56fa 100644 --- a/gcc/config/ns32k/ns32k.h +++ b/gcc/config/ns32k/ns32k.h @@ -760,20 +760,25 @@ enum reg_class of a trampoline, leaving space for the variable parts. */ /* On the 32k, the trampoline looks like this: - addr 0(pc),r2 - jump @__trampoline - .int STATIC - .int FUNCTION -Doing trampolines with a library assist function is easier than figuring -out how to do stores to memory in reverse byte order (the way immediate -operands on the 32k are stored). */ + + addr 0(pc),r2 + movd 16(r2),tos + movd 12(r2),r1 + ret 0 + .align 4 + .int STATIC + .int FUNCTION + + Putting the data in following data is easier than figuring out how to + do stores to memory in reverse byte order (the way immediate operands + on the 32k are stored). */ #define TRAMPOLINE_TEMPLATE(FILE) \ { \ - fprintf (FILE, "\taddr 0(pc),r2\n" ); \ - fprintf (FILE, "\tjump " ); \ - PUT_ABSOLUTE_PREFIX (FILE); \ - fprintf (FILE, "__trampoline\n" ); \ + fprintf (FILE, "\taddr 0(pc),r2\n"); \ + fprintf (FILE, "\tmovd 16(r2),tos\n"); \ + fprintf (FILE, "\tmovd 12(r2),r1\n"); \ + fprintf (FILE, "\tret 0\n"); \ assemble_aligned_integer (UNITS_PER_WORD, const0_rtx); \ assemble_aligned_integer (UNITS_PER_WORD, const0_rtx); \ } @@ -791,24 +796,6 @@ operands on the 32k are stored). */ emit_move_insn (gen_rtx_MEM (SImode, plus_constant (TRAMP, 12)), CXT); \ emit_move_insn (gen_rtx_MEM (SImode, plus_constant (TRAMP, 16)), FNADDR); \ } - -/* This is the library routine that is used - to transfer control from the trampoline - to the actual nested function. */ - -/* The function name __transfer_from_trampoline is not actually used. - The function definition just permits use of "asm with operands" - (though the operand list is empty). */ -#define TRANSFER_FROM_TRAMPOLINE \ -void \ -__transfer_from_trampoline () \ -{ \ - asm (".globl __trampoline"); \ - asm ("__trampoline:"); \ - asm ("movd 16(r2),tos"); \ - asm ("movd 12(r2),r1"); \ - asm ("ret 0"); \ -} /* Addressing modes, and classification of registers for them. */ -- 2.7.4