Skip to content
Snippets Groups Projects
Commit 0cfd47d5 authored by wlott's avatar wlott
Browse files

Changed arch_get_bad_addr to take the signal and code in addition to the

sigcontext.  Hence interrupt_maybe_gc need to take them as arguments.
parent 9d1ac35a
No related branches found
No related tags found
No related merge requests found
/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.1 1992/07/28 20:14:35 wlott Exp $ */ /* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.2 1992/09/08 20:25:46 wlott Exp $ */
/* Interrupt handing magic. */ /* Interrupt handing magic. */
...@@ -231,12 +231,12 @@ static void maybe_now_maybe_later(int signal, int code, ...@@ -231,12 +231,12 @@ static void maybe_now_maybe_later(int signal, int code,
\****************************************************************/ \****************************************************************/
#ifndef INTERNAL_GC_TRIGGER #ifndef INTERNAL_GC_TRIGGER
static boolean gc_trigger_hit(struct sigcontext *context) static boolean gc_trigger_hit(int signal, int code, struct sigcontext *context)
{ {
if (current_auto_gc_trigger == NULL) if (current_auto_gc_trigger == NULL)
return FALSE; return FALSE;
else{ else{
lispobj *badaddr=(lispobj *)arch_get_bad_addr(context); lispobj *badaddr=(lispobj *)arch_get_bad_addr(signal, code, context);
return (badaddr >= current_auto_gc_trigger && return (badaddr >= current_auto_gc_trigger &&
badaddr < current_dynamic_space + DYNAMIC_SPACE_SIZE); badaddr < current_dynamic_space + DYNAMIC_SPACE_SIZE);
...@@ -245,11 +245,11 @@ static boolean gc_trigger_hit(struct sigcontext *context) ...@@ -245,11 +245,11 @@ static boolean gc_trigger_hit(struct sigcontext *context)
#endif #endif
boolean interrupt_maybe_gc(struct sigcontext *context) boolean interrupt_maybe_gc(int signal, int code, struct sigcontext *context)
{ {
if (!foreign_function_call_active if (!foreign_function_call_active
#ifndef INTERNAL_GC_TRIGGER #ifndef INTERNAL_GC_TRIGGER
&& gc_trigger_hit(context) && gc_trigger_hit(signal, code, context)
#endif #endif
) { ) {
#ifndef INTERNAL_GC_TRIGGER #ifndef INTERNAL_GC_TRIGGER
......
/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.h,v 1.1 1992/07/28 20:14:37 wlott Exp $ */ /* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.h,v 1.2 1992/09/08 20:26:29 wlott Exp $ */
#if !defined(_INCLUDE_INTERRUPT_H_) #if !defined(_INCLUDE_INTERRUPT_H_)
#define _INCLUDE_INTERRUPT_H_ #define _INCLUDE_INTERRUPT_H_
...@@ -22,10 +22,10 @@ extern void interrupt_handle_pending(struct sigcontext *scp); ...@@ -22,10 +22,10 @@ extern void interrupt_handle_pending(struct sigcontext *scp);
extern void interrupt_internal_error(int signal, int code, extern void interrupt_internal_error(int signal, int code,
struct sigcontext *scp, struct sigcontext *scp,
boolean continuable); boolean continuable);
extern boolean interrupt_maybe_gc(struct sigcontext *context); extern boolean interrupt_maybe_gc(int sig, int code, struct sigcontext *scp);
extern void interrupt_install_low_level_handler extern void interrupt_install_low_level_handler
(int signal, (int signal,
void handler(int signal, int code, struct sigcontext *handler)); void handler(int signal, int code, struct sigcontext *scp));
extern unsigned long install_handler(int signal, extern unsigned long install_handler(int signal,
void handler(int signal, int code, void handler(int signal, int code,
struct sigcontext *handler)); struct sigcontext *handler));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment