aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2004-09-01 12:41:40 -0700
committerRichard Henderson <rth@gcc.gnu.org>2004-09-01 12:41:40 -0700
commit938e234bf9b4cccdf687338243b690938c0aa795 (patch)
tree74f37cf68201a9cf74e25c31e80183fe99fc5306 /gcc
parentd0879c9868d32770f13233ccf67752f16e97a8ea (diff)
downloadgcc-938e234bf9b4cccdf687338243b690938c0aa795.zip
gcc-938e234bf9b4cccdf687338243b690938c0aa795.tar.gz
gcc-938e234bf9b4cccdf687338243b690938c0aa795.tar.bz2
ns32k.h (TRANSFER_FROM_TRAMPOLINE): Remove.
* config/ns32k/ns32k.h (TRANSFER_FROM_TRAMPOLINE): Remove. (TRAMPOLINE_TEMPLATE): Merge code from __trampoline inline. From-SVN: r86922
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/ns32k/ns32k.h45
2 files changed, 21 insertions, 29 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7df405e..220d75d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/ns32k/ns32k.h b/gcc/config/ns32k/ns32k.h
index a5819f4..93b56fa 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. */