summaryrefslogtreecommitdiff
path: root/gnu/egcs
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>2003-02-17 23:05:51 +0000
committerMarc Espie <espie@cvs.openbsd.org>2003-02-17 23:05:51 +0000
commitbecfa62f65c6f332b9a1a2c794cee39d310b7458 (patch)
treec9920e3ab5b98b53226d4f37b841c4e5b65d1d86 /gnu/egcs
parent5e6d00497579f273134afd44513b4f62372e2480 (diff)
fix trampoline support on hppa. Tested by mickey@
(does not solve the C++ ctor problem, sorry)
Diffstat (limited to 'gnu/egcs')
-rw-r--r--gnu/egcs/gcc/config/pa/pa.h12
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