[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