OSDN Git Service

* config/ns32k/ns32k.h (TRANSFER_FROM_TRAMPOLINE): Remove.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Sep 2004 19:41:40 +0000 (19:41 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Sep 2004 19:41:40 +0000 (19:41 +0000)
        (TRAMPOLINE_TEMPLATE): Merge code from __trampoline inline.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86922 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/ns32k/ns32k.h

index 7df405e..220d75d 100644 (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.
index a5819f4..93b56fa 100644 (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");                       \
-}
 \f
 /* Addressing modes, and classification of registers for them.  */