aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/ns32k
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2004-09-01 19:41:40 +0000
committerRichard Henderson <rth@redhat.com>2004-09-01 19:41:40 +0000
commit9aac9081557bf920268179a9ce52b48ccb38ae02 (patch)
tree74f37cf68201a9cf74e25c31e80183fe99fc5306 /gcc/config/ns32k
parentb40e60bf471f498e39b81a2d8f05176f7ae8e21f (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.h45
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. */