diff --git a/compiler/mips/parms.lisp b/compiler/mips/parms.lisp
index 444f817d7d4df958d0a619bdbd53aba13b1b5cb1..5b804557bbb9e0fcb3918c018e3c6bc99c05210a 100644
--- a/compiler/mips/parms.lisp
+++ b/compiler/mips/parms.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/parms.lisp,v 1.7 1990/02/18 20:24:38 wlott Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/parms.lisp,v 1.8 1990/02/20 18:19:04 wlott Exp $
 ;;;
 ;;;    This file contains some parameterizations of various VM attributes for
 ;;; the MIPS.  This file is separate from other stuff so that it can be compiled
@@ -23,7 +23,7 @@
 
 (export '(sc-number-limit most-positive-cost word-bits byte-bits word-shift
 	  word-bytes target-byte-order lowtag-bits lowtag-mask type-bits
-	  type-mask even-fixnum-type function-pointer-type
+	  type-mask pad-data-block even-fixnum-type function-pointer-type
 	  other-immediate-type list-pointer-type odd-fixnum-type
 	  structure-pointer-type other-pointer-type bignum-type ratio-type
 	  single-float-type double-float-type complex-type
@@ -93,6 +93,9 @@
 (defconstant type-mask (1- (ash 1 type-bits))
   "Mask to extract the type from a header word.")
 
+(defmacro pad-data-block (words)
+  `(logandc2 (+ (ash ,words vm:word-shift) lowtag-mask) lowtag-mask))
+
 
 (defmacro defenum ((&key (prefix "") (suffix "") (start 0) (step 1))
 		   &rest identifiers)
@@ -141,40 +144,30 @@
   ratio
   single-float
   double-float
-  complex)
-
-;;; The array types.
-
-(defenum (:suffix -type
-	  :start (+ (ash 8 lowtag-bits) other-immediate-type)
-	  :step (ash 1 lowtag-bits))
-  ;; The simple arrays:
-    simple-array
-    ;; The vectors:
-      simple-string
-      simple-bit-vector
-      simple-vector
-      simple-array-unsigned-byte-2
-      simple-array-unsigned-byte-4
-      simple-array-unsigned-byte-8
-      simple-array-unsigned-byte-16
-      simple-array-unsigned-byte-32
-      simple-array-single-float
-      simple-array-double-float
-    complex-string
-    complex-bit-vector
-    complex-vector
-  complex-array)
-
-;;; The other random types:
-
-(defenum (:suffix -type
-	  :start (+ (ash 24 lowtag-bits) other-immediate-type)
-	  :step (ash 1 lowtag-bits))
+  complex
+  
+  simple-array
+  simple-string
+  simple-bit-vector
+  simple-vector
+  simple-array-unsigned-byte-2
+  simple-array-unsigned-byte-4
+  simple-array-unsigned-byte-8
+  simple-array-unsigned-byte-16
+  simple-array-unsigned-byte-32
+  simple-array-single-float
+  simple-array-double-float
+  complex-string
+  complex-bit-vector
+  complex-vector
+  complex-array
+  
   code-header
   function-header
+  closure-function-header
   return-pc-header
   closure-header
+  value-cell-header
   symbol-header
   character
   SAP
@@ -208,12 +201,10 @@
   (let ((posn (position symbol initial-symbols)))
     (unless posn
       (error "~S isn't one of the initial symbols." symbol))
-    (macrolet ((round-to-dual-word (x) `(logandc2 (1+ ,x) 1)))
-      (+ (ash (+ (* posn (round-to-dual-word symbol-size))
-		 (round-to-dual-word (1- symbol-size)))
-	      word-shift)
-	 other-pointer-type
-	 (- list-pointer-type)))))
+    (+ (* posn (pad-data-block symbol-size))
+       (pad-data-block (1- symbol-size))
+       other-pointer-type
+       (- list-pointer-type))))