X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fppc-arch.c;h=fb5958ecf389ca632ef8770af5257e2a218f7b83;hb=343ef95fda9da33830d5ab6aabe5368c898f0918;hp=7aa24efbba21967cafa4d54dafd551be1bd86996;hpb=3b3086ad5ad36a66302e1e6c5b7c8246c7963462;p=sbcl.git diff --git a/src/runtime/ppc-arch.c b/src/runtime/ppc-arch.c index 7aa24ef..fb5958e 100644 --- a/src/runtime/ppc-arch.c +++ b/src/runtime/ppc-arch.c @@ -59,7 +59,9 @@ arch_get_bad_addr(int sig, siginfo_t *code, os_context_t *context) void arch_skip_instruction(os_context_t *context) { - ((char*)*os_context_pc_addr(context)) +=4; + char** pcptr; + pcptr = (char**) os_context_pc_addr(context); + *pcptr += 4; } unsigned char * @@ -186,14 +188,14 @@ sigtrap_handler(int signal, siginfo_t *siginfo, os_context_t *context) break; } #ifdef LISP_FEATURE_DARWIN - sigreturn(context); + DARWIN_FIX_CONTEXT(context); #endif return; } if (((code >> 26) == 3) && (((code >> 21) & 31) == 24)) { interrupt_internal_error(signal, code, context, 0); #ifdef LISP_FEATURE_DARWIN - sigreturn(context); + DARWIN_FIX_CONTEXT(context); #endif return; } @@ -201,7 +203,7 @@ sigtrap_handler(int signal, siginfo_t *siginfo, os_context_t *context) interrupt_handle_now(signal, code, context); #ifdef LISP_FEATURE_DARWIN /* Work around G5 bug */ - sigreturn(context); + DARWIN_FIX_CONTEXT(context); #endif }