diff options
author | Marc Espie <espie@cvs.openbsd.org> | 2003-02-17 23:05:51 +0000 |
---|---|---|
committer | Marc Espie <espie@cvs.openbsd.org> | 2003-02-17 23:05:51 +0000 |
commit | becfa62f65c6f332b9a1a2c794cee39d310b7458 (patch) | |
tree | c9920e3ab5b98b53226d4f37b841c4e5b65d1d86 /gnu/egcs/gcc | |
parent | 5e6d00497579f273134afd44513b4f62372e2480 (diff) |
fix trampoline support on hppa. Tested by mickey@
(does not solve the C++ ctor problem, sorry)
Diffstat (limited to 'gnu/egcs/gcc')
-rw-r--r-- | gnu/egcs/gcc/config/pa/pa.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/gnu/egcs/gcc/config/pa/pa.h b/gnu/egcs/gcc/config/pa/pa.h index 2c0f0311100..b4a6f9d5ac5 100644 --- a/gnu/egcs/gcc/config/pa/pa.h +++ b/gnu/egcs/gcc/config/pa/pa.h @@ -278,11 +278,11 @@ extern int target_flags; #if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_PA_11) == 0 #define CPP_SPEC "%{msnake:-D__hp9000s700 -D_PA_RISC1_1}\ %{mpa-risc-1-1:-D__hp9000s700 -D_PA_RISC1_1}\ - %{!ansi: -D_HPUX_SOURCE -D_HIUX_SOURCE}\ + %{!ansi: -D_HPUX_SOURCE -D_HIUX_SOURCE -D__STDC_EXT__}\ %{threads:-D_REENTRANT -D_DCE_THREADS}" #else #define CPP_SPEC "%{!mpa-risc-1-0:%{!mnosnake:%{!msoft-float:-D__hp9000s700 -D_PA_RISC1_1}}} \ - %{!ansi: -D_HPUX_SOURCE -D_HIUX_SOURCE}\ + %{!ansi: -D_HPUX_SOURCE -D_HIUX_SOURCE -D__STDC_EXT__}\ %{threads:-D_REENTRANT -D_DCE_THREADS}" #endif @@ -1365,6 +1365,13 @@ extern union tree_node *current_function_decl; #define TRAMPOLINE_SIZE (11 * 4) +/* Targets redefine this to invoke code to either flush the cache, + or enable stack execution (or both). */ + +#ifndef FINALIZE_TRAMPOLINE +#define FINALIZE_TRAMPOLINE(TRAMP) +#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. @@ -1388,6 +1395,7 @@ extern union tree_node *current_function_decl; end_addr = force_reg (SImode, plus_constant (start_addr, 32)); \ emit_insn (gen_icacheflush (start_addr, end_addr, start_addr, \ gen_reg_rtx (SImode), gen_reg_rtx (SImode)));\ + FINALIZE_TRAMPOLINE(TRAMP); } /* Emit code for a call to builtin_saveregs. We must emit USE insns which |