diff --git a/compiler/mips/cell.lisp b/compiler/mips/cell.lisp
index 459f08ab1df0eed4eef9732fe3e633065ea1f004..6046b69c4fdc29e78c7c99a26f1432d1631f6303 100644
--- a/compiler/mips/cell.lisp
+++ b/compiler/mips/cell.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/cell.lisp,v 1.70 1993/04/28 01:19:54 wlott Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/cell.lisp,v 1.71 1993/05/18 19:23:31 wlott Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -102,6 +102,21 @@
   (:policy :fast)
   (:translate symbol-value))
 
+#+gengc
+(define-vop (symbol-hash)
+  (:policy :fast-safe)
+  (:translate symbol-hash)
+  (:args (symbol :scs (descriptor-reg null)))
+  (:temporary (:scs (unsigned-reg) :from (:argument 0)) temp)
+  (:results (res :scs (any-reg)))
+  (:result-types positive-fixnum)
+  (:generator 2
+    ;; the symbol-hash slot of NIL holds NIL because it is also the cdr
+    ;; slot, so we have to strip off the two low bits to make sure it is
+    ;; a fixnum.
+    (inst lw res symbol symbol-hash-slot other-pointer-type)
+    (inst li temp (lognot #b11))
+    (inst and res res temp)))
 
 
 ;;;; Fdefinition (fdefn) objects.