diff --git a/lisp/sparc-arch.c b/lisp/sparc-arch.c
index 1bb015f414e2a052b9d1a627d3df14d116ee773d..da1e6589772f769cc78d1cc62784563387d1e7bf 100644
--- a/lisp/sparc-arch.c
+++ b/lisp/sparc-arch.c
@@ -1,6 +1,6 @@
 /*
 
- $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/sparc-arch.c,v 1.22 2004/07/07 18:07:53 rtoy Exp $
+ $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/sparc-arch.c,v 1.23 2004/07/29 16:47:40 rtoy Exp $
 
  This code was written as part of the CMU Common Lisp project at
  Carnegie Mellon University, and has been placed in the public domain.
@@ -293,6 +293,7 @@ void handle_allocation_trap(struct sigcontext *context)
   target = 0;
   size = 0;
   
+#if 0
   /*
    * Block all blockable signals.  Need to do this because
    * sigill_handler enables the signals.  When the handler returns,
@@ -302,7 +303,18 @@ void handle_allocation_trap(struct sigcontext *context)
   sigemptyset(&block);
   FILLBLOCKSET(&block);
   sigprocmask(SIG_BLOCK, &block, 0);
-      
+#else
+  /*
+   * Well, maybe not.  sigill_handler probably shouldn't be unblocking
+   * all signals.  So, let's enable just the signals we need.  Since
+   * alloc might call GC, we need to have SIGILL enabled so we can do
+   * allocation.  Do we need more?
+   */
+  sigemptyset(&block);
+  sigaddset(&block, SIGILL);
+  sigprocmask(SIG_UNBLOCK, &block, NULL);
+#endif
+  
   pc = (unsigned int*) SC_PC(context);
   or_inst = pc[-1];
 
@@ -412,7 +424,22 @@ static void sigill_handler(HANDLER_ARGS)
     SAVE_CONTEXT();
 
 #ifdef POSIX_SIGS
+    /*
+     * Do we really want to have the same signals as in the context?
+     * This would typically enable all signals, I think.  But there
+     * are comments in interrupt_handle_now that says we want to
+     * alloc_sap while interrupts are disabled.  The interrupt
+     * handlers that eventually get called from here will re-enable
+     * interrupts at the appropriate time, so we don't do anything
+     * here.
+     *
+     * (I'm guessing here.  I don't really know if this is right or
+     * not, but it doesn't seem to cause harm, and it does seem to be
+     * a bad idea to have interrupts enabled here.)
+     */
+#if 0
     sigprocmask(SIG_SETMASK, &context->uc_sigmask, 0);
+#endif
 #else
     sigsetmask(context->sc_mask);
 #endif