diff options
author | Richard Henderson <rth@redhat.com> | 2004-09-01 19:41:40 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 2004-09-01 19:41:40 +0000 |
commit | 9aac9081557bf920268179a9ce52b48ccb38ae02 (patch) | |
tree | 74f37cf68201a9cf74e25c31e80183fe99fc5306 /gcc/config/ns32k | |
parent | b40e60bf471f498e39b81a2d8f05176f7ae8e21f (diff) |
* config/ns32k/ns32k.h (TRANSFER_FROM_TRAMPOLINE): Remove.
(TRAMPOLINE_TEMPLATE): Merge code from __trampoline inline.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@86922 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/ns32k')
-rw-r--r-- | gcc/config/ns32k/ns32k.h | 45 |
1 files changed, 16 insertions, 29 deletions
diff --git a/gcc/config/ns32k/ns32k.h b/gcc/config/ns32k/ns32k.h index a5819f49478..93b56faa9bb 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. */ |