ns32k.h (TRANSFER_FROM_TRAMPOLINE): Remove.

* config/ns32k/ns32k.h (TRANSFER_FROM_TRAMPOLINE): Remove.
        (TRAMPOLINE_TEMPLATE): Merge code from __trampoline inline.

From-SVN: r86922
This commit is contained in:
Richard Henderson 2004-09-01 12:41:40 -07:00 committed by Richard Henderson
parent d0879c9868
commit 938e234bf9
2 changed files with 21 additions and 29 deletions

View File

@ -1,3 +1,8 @@
2004-09-01 Richard Henderson <rth@redhat.com>
* config/ns32k/ns32k.h (TRANSFER_FROM_TRAMPOLINE): Remove.
(TRAMPOLINE_TEMPLATE): Merge code from __trampoline inline.
2004-09-01 Jakub Jelinek <jakub@redhat.com>
* libgcc-std.ver (GCC_3.4.2): Export also __trampoline_setup.

View File

@ -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. */