Update of /project/movitz/cvsroot/movitz In directory common-lisp.net:/tmp/cvs-serv8643
Modified Files: image.lisp Log Message: Try to make sure that the segment-descriptor-table is 16-aligned.
Date: Tue Jul 27 02:11:44 2004 Author: ffjeld
Index: movitz/image.lisp diff -u movitz/image.lisp:1.51 movitz/image.lisp:1.52 --- movitz/image.lisp:1.51 Fri Jul 23 18:30:27 2004 +++ movitz/image.lisp Tue Jul 27 02:11:44 2004 @@ -9,7 +9,7 @@ ;;;; Created at: Sun Oct 22 00:22:43 2000 ;;;; Distribution: See the accompanying file COPYING. ;;;; -;;;; $Id: image.lisp,v 1.51 2004/07/24 01:30:27 ffjeld Exp $ +;;;; $Id: image.lisp,v 1.52 2004/07/27 09:11:44 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -408,6 +408,9 @@ (declare (ignore x type)) (- (bt:slot-offset 'movitz-constant-block 'non-pointers-end) (bt:slot-offset 'movitz-constant-block 'non-pointers-start)))) + (bochs-flags + :binary-type lu32 + :initform 0) (non-pointers-start :binary-type :label) ; ========= NON-POINTER-START ======= ;; (align-segment-descriptors :binary-type 4) (segment-descriptor-table :binary-type :label) @@ -446,13 +449,9 @@ (segment-descriptor-7 :binary-type segment-descriptor :initform (make-segment-descriptor)) - (bochs-flags - :binary-type lu32 - :initform 0) (scratch0 ; A non-GC-root scratch register :binary-type lu32 :initform 0) - (non-pointers-end :binary-type :label) ; ========= NON-POINTER-END =======
(atomically-status @@ -795,6 +794,10 @@ (ldb (byte 3 0) (image-nil-word *image*)) (tag :null)) (setf (image-constant-block *image*) (make-movitz-constant-block)) + (unless (= 0 (mod (+ (image-nil-word *image*) (slot-offset 'movitz-constant-block + 'segment-descriptor-table)) + 16)) + (warn "Segment descriptor table is not aligned on a 16-byte boundary.")) (setf (movitz-constant-block-interrupt-descriptor-table (image-constant-block *image*)) (movitz-read (make-initial-interrupt-descriptors))) (setf (image-t-symbol *image*) (movitz-read t))