From 42863241c01d65fa72607140a04108d0024675d1 Mon Sep 17 00:00:00 2001 From: Stephen Adams Date: Fri, 2 Sep 1994 22:41:28 +0000 Subject: [PATCH] Fixed illegal-interrupt-handler to clear the bit so that the interrupts has been cleared when the error repl re-enables all interrupts. --- v7/src/runtime/intrpt.scm | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/v7/src/runtime/intrpt.scm b/v7/src/runtime/intrpt.scm index 4f8332afd..608e68258 100644 --- a/v7/src/runtime/intrpt.scm +++ b/v7/src/runtime/intrpt.scm @@ -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)) ;;;; 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) -- 2.25.1