diff --git a/compiler/mips/system.lisp b/compiler/mips/system.lisp
index cc02056e9db074a1d610cce470be0f478508865a..69d51e637a07d8259ec1eda13cfda5e34b7fe9c5 100644
--- a/compiler/mips/system.lisp
+++ b/compiler/mips/system.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/system.lisp,v 1.25 1990/06/18 14:47:22 wlott Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/system.lisp,v 1.26 1990/06/25 21:14:24 wlott Exp $
 ;;;
 ;;;    MIPS VM definitions of various system hacking operations.
 ;;;
@@ -106,6 +106,8 @@
 
 
 (define-vop (get-header-data)
+  (:translate get-header-data)
+  (:policy :fast-safe)
   (:args (x :scs (descriptor-reg)))
   (:results (res :scs (unsigned-reg)))
   (:result-types positive-fixnum)
@@ -114,8 +116,10 @@
     (inst srl res res vm:type-bits)))
 
 (define-vop (set-header-data)
+  (:translate set-header-data)
+  (:policy :fast-safe)
   (:args (x :scs (descriptor-reg) :target res)
-	 (data :scs (any-reg immediate)))
+	 (data :scs (any-reg immediate zero)))
   (:arg-types * positive-fixnum)
   (:results (res :scs (descriptor-reg)))
   (:temporary (:scs (non-descriptor-reg) :type random) t1 t2)
@@ -127,7 +131,8 @@
        (inst sll t2 data (- vm:type-bits 2))
        (inst or t1 t2))
       (immediate
-       (inst or t1 (ash (tn-value data) vm:type-bits))))
+       (inst or t1 (ash (tn-value data) vm:type-bits)))
+      (zero))
     (storew t1 x 0 vm:other-pointer-type)
     (move res x)))
 
@@ -202,7 +207,8 @@
 
 (define-vop (compute-function)
   (:args (code :scs (descriptor-reg))
-	 (offset :scs (any-reg)))
+	 (offset :scs (signed-reg unsigned-reg)))
+  (:arg-types * positive-fixnum)
   (:results (func :scs (descriptor-reg)))
   (:temporary (:scs (non-descriptor-reg)) ndescr)
   (:generator 10