diff --git a/compiler/mips/alloc.lisp b/compiler/mips/alloc.lisp
index e8f9e6d92d63a9c5051d4bb21a79c21f8825c4fd..3ffcbd7a58edd005b0c3708c5e7bec140fe3ba06 100644
--- a/compiler/mips/alloc.lisp
+++ b/compiler/mips/alloc.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/mips/alloc.lisp,v 1.20 1992/12/16 18:13:55 wlott Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/alloc.lisp,v 1.21 1992/12/16 19:07:52 wlott Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -104,8 +104,16 @@
     (inst sll ndescr boxed (- type-bits word-shift))
     (inst or ndescr code-header-type)
     
-    (#-gengc pseudo-atomic #-gengc (pa-flag)
-     #+gengc without-scheduling #+gengc ()
+    #-gengc
+    (pseudo-atomic (pa-flag)
+      (inst or result alloc-tn other-pointer-type)
+      (storew ndescr result 0 other-pointer-type)
+      (storew unboxed result code-code-size-slot other-pointer-type)
+      (storew null-tn result code-entry-points-slot other-pointer-type)
+      (inst addu alloc-tn boxed)
+      (inst addu alloc-tn unboxed))
+    #+gengc
+    (without-scheduling ()
       (inst or result alloc-tn other-pointer-type)
       (storew ndescr alloc-tn 0)
       (storew unboxed alloc-tn code-code-size-slot)
@@ -141,7 +149,7 @@
       (inst li temp (logior (ash (1- size) type-bits) closure-header-type))
       (pseudo-atomic (pa-flag :extra (pad-data-block size))
 	(inst or result alloc-tn function-pointer-type)
-	(storew temp alloc-tn))
+	(storew temp result 0 function-pointer-type))
       (storew function result closure-function-slot function-pointer-type))
     #+gengc
     (let ((size (+ length closure-info-offset)))