[movitz-cvs] CVS update: movitz/losp/muerte/interrupt.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Tue Jun 1 15:17:09 UTC 2004


Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv23639

Modified Files:
	interrupt.lisp 
Log Message:
Fixed the atomically stuff to mostly working.

Date: Tue Jun  1 08:17:08 2004
Author: ffjeld

Index: movitz/losp/muerte/interrupt.lisp
diff -u movitz/losp/muerte/interrupt.lisp:1.8 movitz/losp/muerte/interrupt.lisp:1.9
--- movitz/losp/muerte/interrupt.lisp:1.8	Tue Jun  1 06:42:19 2004
+++ movitz/losp/muerte/interrupt.lisp	Tue Jun  1 08:17:08 2004
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Wed Apr  7 01:50:03 2004
 ;;;;                
-;;;; $Id: interrupt.lisp,v 1.8 2004/06/01 13:42:19 ffjeld Exp $
+;;;; $Id: interrupt.lisp,v 1.9 2004/06/01 15:17:08 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -164,18 +164,26 @@
 	   restart-atomical-block
 	    (:cmpb ,(bt:enum-value 'movitz::atomically-status :restart-primitive-function) :cl)
 	    (:jne 'not-simple-atomical-pf-restart)
-	    (:cmpb 0 :ch)		; map of registers to restore
+	    (:testl ,(bt:enum-value 'movitz::atomically-status '(:eax :ebx :ecx :edx))
+		    :ecx)		; map of registers to restore
 	    (:jnz 'not-simple-atomical-pf-restart)
 	    (:sarl 16 :ecx)		; move atomically-status data into ECX
 	    (:movl (:edi (:ecx 4) ,(- (movitz:tag :null)))
 		   :ecx)		; This is the EIP to restart
 	    (:movl :ecx (:ebp 20))
+	    (:movl (:ebp -32) :ecx)
+	    (:testl ,(bt:enum-value 'movitz::atomically-status :reset-status-p)
+		    :ecx)		; Should we reset status to zero?
+	    (:jnz 'normal-return)
+	    (:xorl :ecx :ecx)		; Do reset status to zero.
 	    (:jmp 'normal-return)
 	   not-simple-atomical-pf-restart
 	    ;; Don't know what to do.
+	    (:halt)
 	    (:int 90)
 	    (:jmp 'not-simple-atomical-pf-restart)
-	    )))))
+	    )))
+    (do-it)))
 
 (defvar *last-interrupt-frame* nil)
 





More information about the Movitz-cvs mailing list