Update of /project/movitz/cvsroot/movitz/losp/muerte In directory common-lisp.net:/tmp/cvs-serv5853
Modified Files: segments.lisp Log Message: Made (setf (segment-register :cs) ..) work.
Date: Fri Jun 10 23:15:18 2005 Author: ffjeld
Index: movitz/losp/muerte/segments.lisp diff -u movitz/losp/muerte/segments.lisp:1.14 movitz/losp/muerte/segments.lisp:1.15 --- movitz/losp/muerte/segments.lisp:1.14 Sun May 8 03:19:41 2005 +++ movitz/losp/muerte/segments.lisp Fri Jun 10 23:15:18 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.14 2005/05/08 01:19:41 ffjeld Exp $ +;;;; $Id: segments.lisp,v 1.15 2005/06/10 21:15:18 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -45,11 +45,20 @@ (:movw :cx ,reg)))) (ecase segment-register-name (:ss (set-sreg :ss)) - (:cs (set-sreg :cs)) (:ds (set-sreg :ds)) (:es (set-sreg :es)) (:fs (set-sreg :fs)) - (:gs (set-sreg :gs)))) + (:gs (set-sreg :gs)) + (:cs (without-interrupts + (with-inline-assembly (:returns :nothing) + (:load-lexical (:lexical-binding value) :untagged-fixnum-ecx) + (:declare-label-set jmp-table (jmp-target)) + (:pushl :ecx) ; push selector + (:pushl (:esi (:offset movitz-funobj constant0) 'jmp-table)) + (:jmp-segment (:esp)) + jmp-target + (:popl :ecx) + (:popl :ecx)))))) value)
(defun %sgdt ()