diff --git a/compiler/vmdef.lisp b/compiler/vmdef.lisp
index e3278a61c7109bede06175a9c72ea004a02a8429..86c63fe2855d28e3f6db02eecb7e0964dece3c71 100644
--- a/compiler/vmdef.lisp
+++ b/compiler/vmdef.lisp
@@ -130,9 +130,9 @@
 ;;; Define-Storage-Class  --  Public
 ;;;
 ;;;
-(defmacro define-storage-class (name number sb-name &key (element-size '1) 
-				     locations save-p alternate-scs
-				     constant-scs)
+(defmacro define-storage-class (name number sb-name &key (element-size '1)
+				     (alignment '1) locations save-p
+				     alternate-scs constant-scs)
   "Define-Storage-Class Name Number Storage-Base {Key Value}*
   Define a storage class Name that uses the named Storage-Base.  Number is a
   small, non-negative integer that is used as an alias.  The following
@@ -142,6 +142,10 @@
       The size of objects in this SC in whatever units the SB uses.  This
       defaults to 1.
 
+  :Alignment Size
+      The alignment restrictions for this SC.  TNs will only be allocated at
+      offsets that are an even multiple of this number.  Defaults to 1.
+
   :Locations (Location*)
       If the SB is :Finite, then this is a list of the offsets within the SB
       that are in this SC.
@@ -198,6 +202,7 @@
 	 (let ((res (make-sc :name ',name :number ',number
 			     :sb (meta-sb-or-lose ',sb-name)
 			     :element-size ,element-size
+			     :alignment ,alignment
 			     :locations ',locations
 			     :save-p ',save-p
 			     :number-stack-p ,nstack-p