--- np2/i286x/i286x.cpp 2003/12/08 00:55:31 1.7 +++ np2/i286x/i286x.cpp 2003/12/24 14:01:41 1.10 @@ -5,7 +5,6 @@ #include "i286xs.h" #include "i286xrep.h" #include "i286xcts.h" -#include "memory.h" #include "pccore.h" #include "iocore.h" #include "i286x.mcr" @@ -2668,7 +2667,8 @@ I286 _popf(void) { // 9D: popf cmp ah, 3 sete I286_TRAP - test ah, 2 // fast_intr + je irqcheck // fast_intr + test ah, 2 je nextop cmp pic.ext_irq, 0 jne nextop @@ -2677,7 +2677,7 @@ I286 _popf(void) { // 9D: popf not ax test al, pic.pi[0].irr jne irqcheck - test al, pic.pi[1].irr + test ah, pic.pi[1].irr jne irqcheck nextop: ret @@ -3596,7 +3596,9 @@ I286 _iret(void) { // CF: iret sete I286_TRAP RESET_XPREFETCH - test I286_FLAG, I_FLAG // fast_intr + cmp I286_TRAP, 0 // fast_intr + jne irqcheck + test I286_FLAG, I_FLAG je nextop cmp pic.ext_irq, 0 jne nextop @@ -3605,7 +3607,7 @@ I286 _iret(void) { // CF: iret not ax test al, pic.pi[0].irr jne irqcheck - test al, pic.pi[1].irr + test ah, pic.pi[1].irr jne irqcheck nextop: ret @@ -4201,14 +4203,15 @@ I286 _sti(void) { // FB: sti test I286_FLAG, T_FLAG setne I286_TRAP - cmp pic.ext_irq, 0 // fast_intr + jne nextopandexit // fast_intr + cmp pic.ext_irq, 0 jne jmp_nextop mov al, pic.pi[0].imr mov ah, pic.pi[1].imr not ax test al, pic.pi[0].irr jne nextopandexit - test al, pic.pi[1].irr + test ah, pic.pi[1].irr jne nextopandexit jmp_nextop: jmp i286op[ebp*4]