diff --git a/lisp/interrupt.c b/lisp/interrupt.c index 2e9c8f425d38e3f05be76e0c75ebbc77461cdb2f..6b9d075858827f234f5ecbc101080f5e9ace5076 100644 --- a/lisp/interrupt.c +++ b/lisp/interrupt.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.12 1997/11/22 14:38:21 dtc Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.13 1997/11/25 15:27:31 dtc Exp $ */ /* Interrupt handing magic. */ @@ -199,10 +199,14 @@ interrupt_handle_pending(struct sigcontext *context) if (maybe_gc_pending) { maybe_gc_pending = FALSE; +#ifndef i386 if (were_in_lisp) +#endif fake_foreign_function_call(context); funcall0(SymbolFunction(MAYBE_GC)); +#ifndef i386 if (were_in_lisp) +#endif undo_fake_foreign_function_call(context); } @@ -261,7 +265,9 @@ interrupt_handle_now(HANDLER_ARGS) SAVE_CONTEXT(); /**/ were_in_lisp = !foreign_function_call_active; +#ifndef i386 if (were_in_lisp) +#endif fake_foreign_function_call(context); if (handler.c==SIG_DFL) @@ -303,7 +309,9 @@ interrupt_handle_now(HANDLER_ARGS) #endif } +#ifndef i386 if (were_in_lisp) +#endif undo_fake_foreign_function_call(context); } @@ -331,8 +339,11 @@ maybe_now_maybe_later(HANDLER_ARGS) context->sc_mask |= BLOCKABLE; #endif SetSymbolValue(INTERRUPT_PENDING, T); - } else if ((!foreign_function_call_active) - && arch_pseudo_atomic_atomic(context)) { + } else if ( +#ifndef i386 + (!foreign_function_call_active) && +#endif + arch_pseudo_atomic_atomic(context)) { pending_signal = signal; pending_code = DEREFCODE(code); #ifdef POSIX_SIGS @@ -406,25 +417,6 @@ boolean interrupt_maybe_gc(HANDLER_ARGS) } #endif -#ifdef i386 -void set_maybe_gc_pending(void) -{ - maybe_gc_pending = TRUE; - if (pending_signal == 0) { - /* Block all blockable signals */ -#ifdef POSIX_SIGS - sigset_t block; - sigemptyset(&block); - FILLBLOCKSET(&block); - sigprocmask(SIG_BLOCK, &block, &pending_mask); -#else - pending_mask = sigblock(BLOCKABLE); -#endif - } - SetSymbolValue(PSEUDO_ATOMIC_INTERRUPTED, make_fixnum(1)); -} -#endif - /****************************************************************\ * Noise to install handlers. * \****************************************************************/ diff --git a/lisp/interrupt.h b/lisp/interrupt.h index 36ed04a39e5803e08dd424330eb80760e085c904..e0d54d5ccc11512fe6ebd9f7ebf9151951116086 100644 --- a/lisp/interrupt.h +++ b/lisp/interrupt.h @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.h,v 1.5 1997/11/19 02:41:55 dtc Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.h,v 1.6 1997/11/25 15:27:32 dtc Exp $ */ #if !defined(_INCLUDE_INTERRUPT_H_) #define _INCLUDE_INTERRUPT_H_ @@ -14,10 +14,6 @@ union interrupt_handler { void (*c)(HANDLER_ARGS); }; -#ifdef i386 -extern void set_maybe_gc_pending(void); -#endif - extern void interrupt_init(void); extern void fake_foreign_function_call(struct sigcontext *context); extern void undo_fake_foreign_function_call(struct sigcontext *context);