[movitz-cvs] CVS update: movitz/losp/muerte/segments.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Fri Jun 10 21:15:19 UTC 2005
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 at 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 ()
More information about the Movitz-cvs
mailing list