diff --git a/compiler/rt/sap.lisp b/compiler/rt/sap.lisp
index 82271f5bb9b6a5744bde2d8abb7d7d6efc030a9a..ccc80d70678d03fd1c4dacba69523df6f3b7970b 100644
--- a/compiler/rt/sap.lisp
+++ b/compiler/rt/sap.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/rt/sap.lisp,v 1.10 1992/03/09 20:35:07 wlott Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/rt/sap.lisp,v 1.11 1992/03/10 09:01:21 wlott Exp $
 ;;;
 ;;; This file contains the IBM RT VM definition of SAP operations.
 ;;;
@@ -262,9 +262,9 @@
 ;;; (the machines address units).  Translate and signed-translate are the Lisp
 ;;; function calls for which these VOP's are in-line expansions.
 ;;;
-(defmacro define-system-set (name :size translate data-scs data-type)
+(defmacro define-system-set (name size translate data-scs data-type)
   (let ((set-form 
-	 (ecase :size
+	 (ecase size
 	   (:byte '(inst stc data base offset))
 	   (:halfword '(inst sth data base offset))
 	   (:word '(inst st data base offset))))
@@ -305,23 +305,23 @@
 
 ) ;EVAL-WHEN
 
-(define-system-set 8bit-system-set 0 %set-sap-ref-8
-  (signed-reg unsigned-reg) (:or signed-num unsigned-num))
+(define-system-set 8bit-system-set :byte %set-sap-ref-8
+  (unsigned-reg) positive-fixnum)
 
-(define-system-set 16bit-system-set 1 %set-sap-ref-16
-  (signed-reg unsigned-reg) (:or signed-num unsigned-num))
+(define-system-set 16bit-system-set :halfword %set-sap-ref-16
+  (unsigned-reg) positive-fixnum)
 
-(define-system-set 32bit-system-set 2 %set-sap-ref-32
-  (signed-reg unsigned-reg) (:or signed-num unsigned-num))
+(define-system-set 32bit-system-set :word %set-sap-ref-32
+  unsigned-reg unsigned-num)
 
-(define-system-set signed-8bit-system-set 0 %set-signed-sap-ref-8
-  (signed-reg unsigned-reg) (:or signed-num unsigned-num))
+(define-system-set signed-8bit-system-set :byte %set-signed-sap-ref-8
+  signed-reg tagged-num)
 
-(define-system-set signed-16bit-system-set 1 %set-signed-sap-ref-16
-  (signed-reg unsigned-reg) (:or signed-num unsigned-num))
+(define-system-set signed-16bit-system-set :halfword %set-signed-sap-ref-16
+  signed-reg tagged-num)
 
-(define-system-set signed-32bit-system-set 2 %set-signed-sap-ref-32
-  (signed-reg unsigned-reg) (:or signed-num unsigned-num))
+(define-system-set signed-32bit-system-set :word %set-signed-sap-ref-32
+  signed-reg signed-num)
 
 ;;; Ugly, because there are only 2 free sap-regs.  We stash the data value in
 ;;; NARGS to free up a sap-reg for BASE.
@@ -355,6 +355,7 @@
   (:translate %set-sap-ref-sap)
   (:args (object :scs (sap-reg))
 	 (data :scs (sap-reg) :target result))
+  (:info offset)
   (:arg-types system-area-pointer
 	      (:constant (unsigned-byte 16))
 	      system-area-pointer)