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:
parent
d0879c9868
commit
938e234bf9
@ -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.
|
||||
|
@ -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. */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user