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

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Thu Apr 15 13:18:49 UTC 2004


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

Modified Files:
	interrupt.lisp 
Log Message:
The interrupt-handlers array now contains the function objects
themselves rather than symbols.

Date: Thu Apr 15 09:18:49 2004
Author: ffjeld

Index: movitz/losp/muerte/interrupt.lisp
diff -u movitz/losp/muerte/interrupt.lisp:1.3 movitz/losp/muerte/interrupt.lisp:1.4
--- movitz/losp/muerte/interrupt.lisp:1.3	Tue Apr 13 12:55:17 2004
+++ movitz/losp/muerte/interrupt.lisp	Thu Apr 15 09:18:48 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.3 2004/04/13 16:55:17 ffjeld Exp $
+;;;; $Id: interrupt.lisp,v 1.4 2004/04/15 13:18:48 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -111,18 +111,12 @@
     (:locally (:pushl (:edi (:edi-offset num-values))))
     
     ;; call handler
-    (:movl (:ebp 4) :ebx)		; interrupt number into EBX
+    (:movl (:ebp 4) :ecx)		; interrupt number into ECX
     (:locally (:movl (:edi (:edi-offset interrupt-handlers)) :eax))
-    (:movl (:eax 2 (:ebx 4)) :eax)	; symbol at (aref EBX interrupt-handlers) into :esi
-    (:leal (:eax -7) :ecx)
-    (:testb 7 :cl)
-    (:jnz 'skip-interrupt-handler)	; if it's not a symbol, never mind.
-    (:movl (:eax #.(movitz::slot-offset 'movitz::movitz-symbol 'movitz::function-value))
-	   :esi)			; load new funobj from symbol into ESI
+    (:movl (:eax 2 (:ecx 4)) :esi)	; funobj at (aref EBX interrupt-handlers) into :esi
     (:movl :ebp :ebx)			; pass interrupt-frame as arg1
-    ;; (:movl :ebx (:ebp -4))		; put interrupt-frame as our fake stack-frame's funobj.
-    (:movl (:ebp 4) :eax)		; pass interrupt number as arg 0.
-    (:shll #.movitz::+movitz-fixnum-shift+ :eax)
+    (:movl (:ebp 4) :ecx)		; pass interrupt number as arg 0.
+    (:leal ((:ecx #.movitz:+movitz-fixnum-factor+)) :eax)
     (:call (:esi #.(movitz::slot-offset 'movitz::movitz-funobj 'movitz::code-vector%2op)))
 
    skip-interrupt-handler
@@ -251,8 +245,7 @@
     (svref vector n)))
 
 (defun (setf interrupt-handler) (handler n)
-  (check-type handler symbol)
-  (assert (fboundp handler))
+  (check-type handler function)
   (let ((vector (load-global-constant interrupt-handlers)))
     (setf (svref vector n) handler)))
 





More information about the Movitz-cvs mailing list