diff --git a/lisp/interrupt.c b/lisp/interrupt.c index 2c484f08f89687623ea8e3447dcff5787a5a0f03..0bb24cbb1a2e94d4a5f7bfbdf7843971e761af8a 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.23 2000/10/21 12:42:46 dtc Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.24 2000/10/21 13:01:23 dtc Exp $ */ /* Interrupt handing magic. */ @@ -360,14 +360,6 @@ maybe_now_maybe_later(HANDLER_ARGS) SAVE_CONTEXT(); /**/ -#if defined(__linux__) && defined(i386) - /* - * Restore the FPU control word, setting the rounding mode to nearest. - */ - - setfpucw(contextstruct.fpstate->cw & ~0xc00); -#endif - if (SymbolValue(INTERRUPTS_ENABLED) == NIL) { pending_signal = signal; pending_code = DEREFCODE(code); @@ -420,12 +412,22 @@ maybe_now_maybe_later(HANDLER_ARGS) #endif /* POSIX_SIGS */ arch_set_pseudo_atomic_interrupted(context); - } else + } else { +#if defined(__linux__) && defined(i386) + /* + * Restore the FPU control word, setting the rounding mode to nearest. + */ + + if (contextstruct.fpstate) + setfpucw(contextstruct.fpstate->cw & ~0xc00); +#endif + #if ( defined( __linux__ ) && defined( i386 ) ) interrupt_handle_now(signal, contextstruct); #else interrupt_handle_now(signal, code, context); #endif + } } /****************************************************************\