diff --git a/compiler/ppc/parms.lisp b/compiler/ppc/parms.lisp
index 3431ac9c112c7250d560e662a8439518d61379ce..e8e81e72e3557fa91c4dbd57266bc09c5c7e4095 100644
--- a/compiler/ppc/parms.lisp
+++ b/compiler/ppc/parms.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/parms.lisp,v 1.16 2006/12/02 15:22:36 rtoy Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/parms.lisp,v 1.17 2008/09/05 22:03:12 rtoy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -270,9 +270,10 @@
     :key-and-value
     :key-or-value
     
+    lisp::*gc-inhibit*
+
     ;; Spare symbols.  Rename these when you need to add some static
     ;; symbols and don't want to do a cross-compile.
-    spare-9
     spare-8
     spare-7
     spare-6
diff --git a/compiler/sparc/parms.lisp b/compiler/sparc/parms.lisp
index 9e883d90356179173ef6613f5a3e3ab7596a1310..875666ea07f057ed0df47035b1d91a71ba50b692 100644
--- a/compiler/sparc/parms.lisp
+++ b/compiler/sparc/parms.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/parms.lisp,v 1.54 2008/04/15 14:33:25 rtoy Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/parms.lisp,v 1.55 2008/09/05 22:03:12 rtoy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -329,10 +329,11 @@
     :key-and-value
     :key-or-value
     
+    lisp::*gc-inhibit*
+    
     ;; Some spare static symbols.  Useful for adding another static
     ;; symbol without having to do a cross-compile.  Just rename one
     ;; of these to the desired name.
-    spare-9
     spare-8
     spare-7
     spare-6
diff --git a/lisp/breakpoint.c b/lisp/breakpoint.c
index 01b4345f505ea39973f1ee2b8a66c861d69a281b..d742b9807eff39b629298c833f7abaee23e0f3af 100644
--- a/lisp/breakpoint.c
+++ b/lisp/breakpoint.c
@@ -1,6 +1,6 @@
 /*
 
- $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/breakpoint.c,v 1.23 2008/09/05 13:12:03 rtoy Exp $
+ $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/breakpoint.c,v 1.24 2008/09/05 22:03:12 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.
@@ -326,8 +326,6 @@ handle_function_end_breakpoint(int signal, int subcode, os_context_t * scp)
 #endif
     }
 
-    funcall3(SymbolFunction(HANDLE_BREAKPOINT), offset, code, alloc_sap(scp));
-
     /*
      * Breakpoint handling done, so get the real LRA where we're
      * supposed to return to so we can return there.
@@ -342,6 +340,21 @@ handle_function_end_breakpoint(int signal, int subcode, os_context_t * scp)
     if (codeptr->constants[KNOWN_RETURN_P_SLOT] == NIL)
 	SC_REG(scp, reg_CODE) = lra;
 #endif
+    
+    {
+        lispobj saved_gc_inhibit;
+
+#ifdef GC_INHIBIT
+        saved_gc_inhibit = SymbolValue(GC_INHIBIT);
+        SetSymbolValue(GC_INHIBIT, T);
+#endif        
+        funcall3(SymbolFunction(HANDLE_BREAKPOINT), offset, code, alloc_sap(scp));
+
+#ifdef GC_INHIBIT
+        SetSymbolValue(GC_INHIBIT, saved_gc_inhibit);
+#endif
+    }
+
     undo_fake_foreign_function_call(scp);
     return (void *) (lra - type_OtherPointer + sizeof(lispobj));
 }