[movitz-cvs] CVS update: movitz/image.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Tue Jul 27 09:11:44 UTC 2004


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))





More information about the Movitz-cvs mailing list