diff --git a/assembly/sparc/arith.lisp b/assembly/sparc/arith.lisp
index 36dabfff990258f7577153ad4e7d6fd85279bf4a..78b49e3fe07d77dfe964ab9bc5fd350b58ad7624 100644
--- a/assembly/sparc/arith.lisp
+++ b/assembly/sparc/arith.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/sparc/arith.lisp,v 1.9 1992/03/11 21:37:45 wlott Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/sparc/arith.lisp,v 1.10 1992/04/28 04:23:47 wlott Exp $
 ;;;
 ;;; Stuff to handle simple cases for generic arithmetic.
 ;;;
@@ -166,12 +166,10 @@
   (inst or lo temp)
   (inst sra hi 2)
   ;; Allocate a BIGNUM for the result.
-  (pseudo-atomic (temp)
+  (pseudo-atomic (:extra (pad-data-block (1+ bignum-digits-offset)))
     (let ((one-word (gen-label)))
-      (inst add res alloc-tn other-pointer-type)
-      ;; Assume we need one word.
-      (inst add alloc-tn (pad-data-block (1+ bignum-digits-offset)))
-      ;; Is that correct?
+      (inst or res alloc-tn other-pointer-type)
+      ;; We start out assuming that we need one word.  Is that correct?
       (inst sra temp lo 31)
       (inst xorcc temp hi)
       (inst b :eq one-word)