Update of /project/movitz/cvsroot/movitz/losp/muerte In directory common-lisp.net:/tmp/cvs-serv11308
Modified Files: segments.lisp Log Message: Fixed a nasty bug in (setf global-segment-descriptor-table) that would install the wrong (about half-size) limit, causing weird crashes.
Date: Sat Jun 11 00:43:53 2005 Author: ffjeld
Index: movitz/losp/muerte/segments.lisp diff -u movitz/losp/muerte/segments.lisp:1.15 movitz/losp/muerte/segments.lisp:1.16 --- movitz/losp/muerte/segments.lisp:1.15 Fri Jun 10 23:15:18 2005 +++ movitz/losp/muerte/segments.lisp Sat Jun 11 00:43:52 2005 @@ -10,7 +10,7 @@ ;;;; Author: Frode Vatvedt Fjeld frodef@acm.org ;;;; Created at: Thu May 8 14:25:06 2003 ;;;; -;;;; $Id: segments.lisp,v 1.15 2005/06/10 21:15:18 ffjeld Exp $ +;;;; $Id: segments.lisp,v 1.16 2005/06/10 22:43:52 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -176,9 +176,9 @@
(defun (setf global-segment-descriptor-table) (table) "Install <table> as the GDT. -NB! you need ensure that the table object isn't garbage-collected." +NB! you need to ensure that the table object isn't garbage-collected." (check-type table (vector (unsigned-byte 32))) - (let ((limit (1- (* 2 (length table)))) + (let ((limit (1- (* 4 (length table)))) (base (+ 2 (+ (object-location table) (location-physical-offset))))) (%lgdt base limit)