Commit 938e234b by Richard Henderson Committed by Richard Henderson

ns32k.h (TRANSFER_FROM_TRAMPOLINE): Remove.

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

From-SVN: r86922
parent d0879c98
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.
......
......@@ -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. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment