diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 1996-07-12 17:53:01 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 1996-07-12 17:53:01 +0000 |
commit | ad7d60415a09d355a440b6825ea2cd6c61ad150f (patch) | |
tree | 674a812f07d0bf1140f2278cd8ea5d1427602370 | |
parent | c63bb44380f38059d43c01ff32d57583085ad61c (diff) |
Signaux pour le PowerPC sous Linux
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@926 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r-- | asmrun/signals.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/asmrun/signals.c b/asmrun/signals.c index e0c917d14..3a1923dcf 100644 --- a/asmrun/signals.c +++ b/asmrun/signals.c @@ -13,6 +13,9 @@ #include <signal.h> #include <stdio.h> +#ifdef __linux +#include <asm/sigcontext.h> +#endif #include "alloc.h" #include "memory.h" #include "minor_gc.h" @@ -87,10 +90,15 @@ void leave_blocking_section() async_signal_mode = 0; } -#if defined(TARGET_alpha) || defined(TARGET_mips) || defined(TARGET_power) +#if defined(TARGET_alpha) || defined(TARGET_mips) || \ + (defined(TARGET_power) && defined(_AIX)) void handle_signal(sig, code, context) int sig, code; struct sigcontext * context; +#elif defined(TARGET_power) && defined(__linux) +void handle_signal(sig, context) + int sig; + struct pt_regs * context; #else void handle_signal(sig) int sig; @@ -132,6 +140,10 @@ void handle_signal(sig) if (caml_last_return_address == NULL) context->sc_jmpbuf.jmp_context.gpr[31] = (ulong_t) young_limit; #endif +#ifdef __linux + if (caml_last_return_address == NULL) + context->gpr[31] = (unsigned long) young_limit; +#endif #endif } } |