Update of /project/movitz/cvsroot/movitz/losp/muerte In directory common-lisp.net:/tmp/cvs-serv30097
Modified Files: interrupt.lisp Log Message: Save the CR2 register in the DIT-frame. It holds the offending address in case of a page-fault.
Date: Mon Jan 17 11:51:09 2005 Author: ffjeld
Index: movitz/losp/muerte/interrupt.lisp diff -u movitz/losp/muerte/interrupt.lisp:1.34 movitz/losp/muerte/interrupt.lisp:1.35 --- movitz/losp/muerte/interrupt.lisp:1.34 Tue Jan 4 17:54:16 2005 +++ movitz/losp/muerte/interrupt.lisp Mon Jan 17 11:51:09 2005 @@ -10,7 +10,7 @@ ;;;; Author: Frode Vatvedt Fjeld frodef@acm.org ;;;; Created at: Wed Apr 7 01:50:03 2004 ;;;; -;;;; $Id: interrupt.lisp,v 1.34 2005/01/04 16:54:16 ffjeld Exp $ +;;;; $Id: interrupt.lisp,v 1.35 2005/01/17 10:51:09 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -27,8 +27,10 @@ :edi :dynamic-env :atomically-continuation - :raw-scratch0 - :ecx :eax :edx :ebx :esi + :raw-scratch0 + :ecx + :cr2 + :eax :edx :ebx :esi :scratch1 :scratch2 :debug0 :debug1 @@ -124,7 +126,10 @@ (:locally (:pushl (:edi (:edi-offset dynamic-env)))) (:locally (:pushl (:edi (:edi-offset atomically-continuation)))) (:locally (:pushl (:edi (:edi-offset raw-scratch0)))) - ,@(loop for reg in (sort (copy-list '(:eax :ebx :ecx :edx :esi)) + (:locally (:pushl :ecx)) + (:movcr :cr2 :ecx) + (:locally (:pushl :ecx)) + ,@(loop for reg in (sort (copy-list '(:eax :ebx :edx :esi)) #'> :key #'dit-frame-index) collect `(:pushl ,reg))