diff options
Diffstat (limited to 'gcc/libgcc2.c')
-rw-r--r-- | gcc/libgcc2.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index 21301f5..673d2f3 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -2724,7 +2724,10 @@ __enable_execute_stack () /* Motorola forgot to put memctl.o in the libp version of libc881.a, so define it here, because we need it in __clear_insn_cache below */ +/* On older versions of this OS, no memctl or MCT_TEXT are defined; + hence we enable this stuff only if MCT_TEXT is #define'd. */ +#ifdef MCT_TEXT asm("\n\ global memctl\n\ memctl:\n\ @@ -2735,6 +2738,7 @@ memctl:\n\ noerror:\n\ movq &0,%d0\n\ rts"); +#endif /* Clear instruction cache so we can call trampolines on stack. This is called from FINALIZE_TRAMPOLINE in mot3300.h. */ @@ -2742,6 +2746,7 @@ noerror:\n\ void __clear_insn_cache () { +#ifdef MCT_TEXT int save_errno; /* Preserve errno, because users would be surprised to have @@ -2752,6 +2757,7 @@ __clear_insn_cache () No need to use an address derived from _start or %sp, as 0 works also. */ memctl(0, 4096, MCT_TEXT); errno = save_errno; +#endif } #endif /* __sysV68__ */ |