Ver código fonte

Patched nagging problem with interrupts in traps --> traps / trap writer stable

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@6800 8c9fc860-2736-0410-a75d-ab315db34111
felixf 9 anos atrás
pai
commit
f5b38ee113
1 arquivos alterados com 1 adições e 2 exclusões
  1. 1 2
      source/ARM.Traps.Mod

+ 1 - 2
source/ARM.Traps.Mod

@@ -355,7 +355,6 @@ VAR
 		IF ~handled THEN
 			(* Taken from Machine to allow the FINALLY in the kernel *)
 			exc.locks := Machine.BreakAll();
-			Machine.EnableInterrupts();
 			IF ~traceTrap THEN	(* trap *)
 				IF user THEN	(* return to outer level *)
 					IF TraceVerbose THEN
@@ -364,10 +363,10 @@ VAR
 						KernelLog.Hex(t.restartSP, 9);  KernelLog.Hex(t.stack.high, 9);
 						KernelLog.Exit
 					END;
-					(*INCL(int.FLAGS, Machine.IFBit);	(* enable interrupts *)*)
 					int.BP := t.restartSP; int.SP := t.restartSP;	(* reset stack *)
 					int.PC := t.restartPC;	(* restart object body or terminate *)
 				ELSE	(* trap was in kernel (interrupt handler) *)	(* fixme: recover from trap in stack traceback *)
+					Machine.EnableInterrupts();
 					KernelLog.Enter;  KernelLog.String("Kernel halt");  KernelLog.Exit;
 					Machine.Shutdown(FALSE)
 				END