mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-31 15:31:11 +08:00
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
This commit is contained in:
parent
44d43e5377
commit
b81ecf6fd6
@ -217,6 +217,16 @@
|
||||
make static; adjust parameters for the hook.
|
||||
* 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>
|
||||
|
||||
* 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);
|
||||
extern void print_operand_address (FILE *, rtx);
|
||||
extern void print_operand (FILE *, rtx, 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 rtx s390_load_got (void);
|
||||
extern rtx s390_get_thread_pointer (void);
|
||||
|
@ -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;
|
||||
gpr 0 is used to hold the static chain. */
|
||||
|
||||
void
|
||||
s390_trampoline_template (FILE *file)
|
||||
static void
|
||||
s390_asm_trampoline_template (FILE *file)
|
||||
{
|
||||
rtx op[2];
|
||||
op[0] = gen_rtx_REG (Pmode, 0);
|
||||
@ -8890,15 +8890,19 @@ s390_trampoline_template (FILE *file)
|
||||
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. */
|
||||
|
||||
void
|
||||
s390_initialize_trampoline (rtx addr, rtx fnaddr, rtx cxt)
|
||||
static void
|
||||
s390_trampoline_init (rtx m_tramp, tree fndecl, rtx cxt)
|
||||
{
|
||||
emit_move_insn (gen_rtx_MEM (Pmode,
|
||||
memory_address (Pmode,
|
||||
plus_constant (addr, (TARGET_64BIT ? 16 : 8)))), cxt);
|
||||
emit_move_insn (gen_rtx_MEM (Pmode,
|
||||
memory_address (Pmode,
|
||||
plus_constant (addr, (TARGET_64BIT ? 24 : 12)))), fnaddr);
|
||||
rtx fnaddr = XEXP (DECL_RTL (fndecl), 0);
|
||||
rtx mem;
|
||||
|
||||
emit_block_move (m_tramp, assemble_trampoline_template (),
|
||||
GEN_INT (2*UNITS_PER_WORD), BLOCK_OP_NORMAL);
|
||||
|
||||
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
|
||||
@ -10152,6 +10156,11 @@ s390_reorg (void)
|
||||
#undef TARGET_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;
|
||||
|
||||
#include "gt-s390.h"
|
||||
|
@ -712,14 +712,8 @@ CUMULATIVE_ARGS;
|
||||
|
||||
/* Trampolines for nested functions. */
|
||||
|
||||
#define TRAMPOLINE_SIZE (TARGET_64BIT ? 32 : 16)
|
||||
|
||||
#define INITIALIZE_TRAMPOLINE(ADDR, FNADDR, CXT) \
|
||||
s390_initialize_trampoline ((ADDR), (FNADDR), (CXT))
|
||||
|
||||
#define TRAMPOLINE_TEMPLATE(FILE) \
|
||||
s390_trampoline_template (FILE)
|
||||
|
||||
#define TRAMPOLINE_SIZE (TARGET_64BIT ? 32 : 16)
|
||||
#define TRAMPOLINE_ALIGNMENT BITS_PER_WORD
|
||||
|
||||
/* Addressing modes, and classification of registers for them. */
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user