Commit b81ecf6f by Richard Henderson Committed by Richard Henderson

s390.c (s390_asm_trampoline_template): Rename from s390_trampoline_template; make static.

        * config/s390/s390.c (s390_asm_trampoline_template): Rename from
        s390_trampoline_template; make static.
        (s390_trampoline_init): Rename from s390_initialize_trampoline;
        make static; adjust for target hook.
        (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
        * config/s390/s390-protos.h: Remove trampoline decls.
        * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
        (TRAMPOLINE_TEMPLATE): Remove.
        (TRAMPOLINE_ALIGNMENT): New.

From-SVN: r152009
parent 44d43e53
...@@ -217,6 +217,16 @@ ...@@ -217,6 +217,16 @@
make static; adjust parameters for the hook. make static; adjust parameters for the hook.
* config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove. * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
* config/s390/s390.c (s390_asm_trampoline_template): Rename from
s390_trampoline_template; make static.
(s390_trampoline_init): Rename from s390_initialize_trampoline;
make static; adjust for target hook.
(TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
* config/s390/s390-protos.h: Remove trampoline decls.
* config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
(TRAMPOLINE_TEMPLATE): Remove.
(TRAMPOLINE_ALIGNMENT): New.
2009-09-22 Jakub Jelinek <jakub@redhat.com> 2009-09-22 Jakub Jelinek <jakub@redhat.com>
* config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
......
...@@ -106,8 +106,6 @@ extern bool s390_output_addr_const_extra (FILE*, rtx); ...@@ -106,8 +106,6 @@ extern bool s390_output_addr_const_extra (FILE*, rtx);
extern void print_operand_address (FILE *, rtx); extern void print_operand_address (FILE *, rtx);
extern void print_operand (FILE *, rtx, int); extern void print_operand (FILE *, rtx, int);
extern void s390_output_pool_entry (rtx, enum machine_mode, unsigned int); extern void s390_output_pool_entry (rtx, enum machine_mode, unsigned int);
extern void s390_trampoline_template (FILE *);
extern void s390_initialize_trampoline (rtx, rtx, rtx);
extern int s390_agen_dep_p (rtx, rtx); extern int s390_agen_dep_p (rtx, rtx);
extern rtx s390_load_got (void); extern rtx s390_load_got (void);
extern rtx s390_get_thread_pointer (void); extern rtx s390_get_thread_pointer (void);
......
...@@ -8863,8 +8863,8 @@ s390_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, ...@@ -8863,8 +8863,8 @@ s390_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
On S/390, we use gpr 1 internally in the trampoline code; On S/390, we use gpr 1 internally in the trampoline code;
gpr 0 is used to hold the static chain. */ gpr 0 is used to hold the static chain. */
void static void
s390_trampoline_template (FILE *file) s390_asm_trampoline_template (FILE *file)
{ {
rtx op[2]; rtx op[2];
op[0] = gen_rtx_REG (Pmode, 0); op[0] = gen_rtx_REG (Pmode, 0);
...@@ -8890,15 +8890,19 @@ s390_trampoline_template (FILE *file) ...@@ -8890,15 +8890,19 @@ s390_trampoline_template (FILE *file)
FNADDR is an RTX for the address of the function's pure code. FNADDR is an RTX for the address of the function's pure code.
CXT is an RTX for the static chain value for the function. */ CXT is an RTX for the static chain value for the function. */
void static void
s390_initialize_trampoline (rtx addr, rtx fnaddr, rtx cxt) s390_trampoline_init (rtx m_tramp, tree fndecl, rtx cxt)
{ {
emit_move_insn (gen_rtx_MEM (Pmode, rtx fnaddr = XEXP (DECL_RTL (fndecl), 0);
memory_address (Pmode, rtx mem;
plus_constant (addr, (TARGET_64BIT ? 16 : 8)))), cxt);
emit_move_insn (gen_rtx_MEM (Pmode, emit_block_move (m_tramp, assemble_trampoline_template (),
memory_address (Pmode, GEN_INT (2*UNITS_PER_WORD), BLOCK_OP_NORMAL);
plus_constant (addr, (TARGET_64BIT ? 24 : 12)))), fnaddr);
mem = adjust_address (m_tramp, Pmode, 2*UNITS_PER_WORD);
emit_move_insn (mem, cxt);
mem = adjust_address (m_tramp, Pmode, 3*UNITS_PER_WORD);
emit_move_insn (mem, fnaddr);
} }
/* Output assembler code to FILE to increment profiler label # LABELNO /* Output assembler code to FILE to increment profiler label # LABELNO
...@@ -10152,6 +10156,11 @@ s390_reorg (void) ...@@ -10152,6 +10156,11 @@ s390_reorg (void)
#undef TARGET_CAN_ELIMINATE #undef TARGET_CAN_ELIMINATE
#define TARGET_CAN_ELIMINATE s390_can_eliminate #define TARGET_CAN_ELIMINATE s390_can_eliminate
#undef TARGET_ASM_TRAMPOLINE_TEMPLATE
#define TARGET_ASM_TRAMPOLINE_TEMPLATE s390_asm_trampoline_template
#undef TARGET_TRAMPOLINE_INIT
#define TARGET_TRAMPOLINE_INIT s390_trampoline_init
struct gcc_target targetm = TARGET_INITIALIZER; struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-s390.h" #include "gt-s390.h"
...@@ -712,14 +712,8 @@ CUMULATIVE_ARGS; ...@@ -712,14 +712,8 @@ CUMULATIVE_ARGS;
/* Trampolines for nested functions. */ /* Trampolines for nested functions. */
#define TRAMPOLINE_SIZE (TARGET_64BIT ? 32 : 16) #define TRAMPOLINE_SIZE (TARGET_64BIT ? 32 : 16)
#define TRAMPOLINE_ALIGNMENT BITS_PER_WORD
#define INITIALIZE_TRAMPOLINE(ADDR, FNADDR, CXT) \
s390_initialize_trampoline ((ADDR), (FNADDR), (CXT))
#define TRAMPOLINE_TEMPLATE(FILE) \
s390_trampoline_template (FILE)
/* Addressing modes, and classification of registers for them. */ /* 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