From 2a86f5154bf543a03a4939434b4b0a813c4b48ac Mon Sep 17 00:00:00 2001 From: Paul Brook Date: Sun, 1 May 2005 15:28:53 +0000 Subject: [PATCH] arm.h (ARM_EMIT_TRAMPOLINE_CACHE_CLEAR): Define. 2005-01-05 Paul Brook * config/arm/arm.h (ARM_EMIT_TRAMPOLINE_CACHE_CLEAR): Define. (INITIALIZE_TRAMPOLINE): Use it. * config/arm/linux-gas.h (INITIALIZE_TRAMPOLINE): Remove. * config/arm/netbsd.h (INITIALIZE_TRAMPOLINE): Remove. * config/arm/netbsd-elf.h (INITIALIZE_TRAMPOLINE): Remove. From-SVN: r99068 --- gcc/ChangeLog | 8 ++++++++ gcc/config/arm/arm.h | 11 +++++++++++ gcc/config/arm/linux-gas.h | 13 ------------- gcc/config/arm/netbsd-elf.h | 15 --------------- gcc/config/arm/netbsd.h | 13 ------------- 5 files changed, 19 insertions(+), 41 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1148ec2..db25a0a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2005-01-05 Paul Brook + + * config/arm/arm.h (ARM_EMIT_TRAMPOLINE_CACHE_CLEAR): Define. + (INITIALIZE_TRAMPOLINE): Use it. + * config/arm/linux-gas.h (INITIALIZE_TRAMPOLINE): Remove. + * config/arm/netbsd.h (INITIALIZE_TRAMPOLINE): Remove. + * config/arm/netbsd-elf.h (INITIALIZE_TRAMPOLINE): Remove. + 2005-05-01 Gerald Pfeifer * doc/install.texi (Specific): Omit dots in the @anchors names diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 6310a62..2fcf63f 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -1986,6 +1986,16 @@ typedef struct /* Alignment required for a trampoline in bits. */ #define TRAMPOLINE_ALIGNMENT 32 +/* Call __clear_cache after setting up the trampoline unless this is a nop. */ +#ifdef CLEAR_INSN_CACHE +#define ARM_EMIT_TRAMPOLINE_CACHE_CLEAR(TRAMP) \ + emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__clear_cache"), \ + 0, VOIDmode, 2, TRAMP, Pmode, \ + plus_constant (TRAMP, TRAMPOLINE_SIZE), Pmode); +#else +#define ARM_EMIT_TRAMPOLINE_CACHE_CLEAR(TRAMP) do {} while (0) +#endif + /* Emit RTL insns to initialize the variable parts of a trampoline. 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. */ @@ -2000,6 +2010,7 @@ typedef struct plus_constant (TRAMP, \ TARGET_ARM ? 12 : 20)), \ FNADDR); \ + ARM_EMIT_TRAMPOLINE_CACHE_CLEAR (TRAMP); \ } #endif diff --git a/gcc/config/arm/linux-gas.h b/gcc/config/arm/linux-gas.h index 85ae98a..45afa6e 100644 --- a/gcc/config/arm/linux-gas.h +++ b/gcc/config/arm/linux-gas.h @@ -42,19 +42,6 @@ #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE BITS_PER_WORD -/* Emit code to set up a trampoline and synchronize the caches. */ -#undef INITIALIZE_TRAMPOLINE -#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \ -{ \ - emit_move_insn (gen_rtx_MEM (SImode, plus_constant ((TRAMP), 8)), \ - (CXT)); \ - emit_move_insn (gen_rtx_MEM (SImode, plus_constant ((TRAMP), 12)), \ - (FNADDR)); \ - emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__clear_cache"), \ - 0, VOIDmode, 2, TRAMP, Pmode, \ - plus_constant (TRAMP, TRAMPOLINE_SIZE), Pmode); \ -} - /* Clear the instruction cache from `beg' to `end'. This makes an inline system call to SYS_cacheflush. */ #define CLEAR_INSN_CACHE(BEG, END) \ diff --git a/gcc/config/arm/netbsd-elf.h b/gcc/config/arm/netbsd-elf.h index 9cf47c7..602619f 100644 --- a/gcc/config/arm/netbsd-elf.h +++ b/gcc/config/arm/netbsd-elf.h @@ -136,21 +136,6 @@ #undef DEFAULT_STRUCTURE_SIZE_BOUNDARY #define DEFAULT_STRUCTURE_SIZE_BOUNDARY 8 -/* Emit code to set up a trampoline and synchronize the caches. */ -#undef INITIALIZE_TRAMPOLINE -#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \ -do \ - { \ - emit_move_insn (gen_rtx_MEM (SImode, plus_constant ((TRAMP), 8)), \ - (CXT)); \ - emit_move_insn (gen_rtx_MEM (SImode, plus_constant ((TRAMP), 12)), \ - (FNADDR)); \ - emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__clear_cache"), \ - 0, VOIDmode, 2, TRAMP, Pmode, \ - plus_constant (TRAMP, TRAMPOLINE_SIZE), Pmode); \ - } \ -while (0) - /* Clear the instruction cache from `BEG' to `END'. This makes a call to the ARM_SYNC_ICACHE architecture specific syscall. */ #define CLEAR_INSN_CACHE(BEG, END) \ diff --git a/gcc/config/arm/netbsd.h b/gcc/config/arm/netbsd.h index 8b9e437..59a7b80 100644 --- a/gcc/config/arm/netbsd.h +++ b/gcc/config/arm/netbsd.h @@ -138,19 +138,6 @@ #undef DEFAULT_STRUCTURE_SIZE_BOUNDARY #define DEFAULT_STRUCTURE_SIZE_BOUNDARY 8 -/* Emit code to set up a trampoline and synchronize the caches. */ -#undef INITIALIZE_TRAMPOLINE -#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \ -{ \ - emit_move_insn (gen_rtx_MEM (SImode, plus_constant ((TRAMP), 8)), \ - (CXT)); \ - emit_move_insn (gen_rtx_MEM (SImode, plus_constant ((TRAMP), 12)), \ - (FNADDR)); \ - emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__clear_cache"), \ - 0, VOIDmode, 2, TRAMP, Pmode, \ - plus_constant (TRAMP, TRAMPOLINE_SIZE), Pmode); \ -} - /* Clear the instruction cache from `BEG' to `END'. This makes a call to the ARM32_SYNC_ICACHE architecture specific syscall. */ #define CLEAR_INSN_CACHE(BEG, END) \ -- 2.7.4