Fixed illegal-interrupt-handler to clear the bit so that the interrupts has
authorStephen Adams <edu/mit/csail/zurich/adams>
Fri, 2 Sep 1994 22:41:28 +0000 (22:41 +0000)
committerStephen Adams <edu/mit/csail/zurich/adams>
Fri, 2 Sep 1994 22:41:28 +0000 (22:41 +0000)
been cleared when the error repl re-enables all interrupts.

v7/src/runtime/intrpt.scm

index 4f8332afd5e62027a7e66c2e2867451060ffdfe5..608e68258154280fe03477211787bb12d90e0fd6 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: intrpt.scm,v 14.20 1994/01/29 21:36:07 adams Exp $
+$Id: intrpt.scm,v 14.21 1994/09/02 22:41:28 adams Exp $
 
 Copyright (c) 1988-93 Massachusetts Institute of Technology
 
@@ -129,11 +129,10 @@ MIT in each case. |#
   ;; prevent us from getting into a loop just running the daemons.
   (clear-interrupts! interrupt-bit/after-gc))
 
-(define (illegal-interrupt-handler interrupt-code interrupt-enables)
+(define ((illegal-interrupt-handler interrupt-bit)
+        interrupt-code interrupt-enables)
+  (clear-interrupts! interrupt-bit)
   (error "Illegal interrupt" interrupt-code interrupt-enables))
-
-(define (default-interrupt-handler interrupt-code interrupt-enables)
-  (error "Anomalous interrupt" interrupt-code interrupt-enables))
 \f
 ;;;; Keyboard Interrupts
 
@@ -217,11 +216,11 @@ MIT in each case. |#
           (do ((i 0 (fix:+ i 1)))
               ((fix:= i length))
             (if (not (vector-ref system-interrupt-vector i))
-                (begin
+                (let ((interrupt-bit (fix:lsh 1 i)))
                   (vector-set! interrupt-mask-vector i
-                               (fix:not (fix:lsh 1 i)))
+                               (fix:- interrupt-bit 1)) ; higher priority only
                   (vector-set! system-interrupt-vector i
-                               illegal-interrupt-handler)))))
+                               (illegal-interrupt-handler interrupt-bit))))))
 
         (vector-set! interrupt-mask-vector stack-overflow-slot
                      interrupt-mask/none)