diff --git a/VAX/vax_cpu.c b/VAX/vax_cpu.c index b68cc72e..10b9e700 100644 --- a/VAX/vax_cpu.c +++ b/VAX/vax_cpu.c @@ -1635,13 +1635,16 @@ for ( ;; ) { case TSTL: CC_IIZZ_L (op0); /* set cc's */ if ((cc == CC_Z) && /* zero result and */ - ((((cpu_idle_mask & VAX_IDLE_ULTOLD) && /* running Old Ultrix or friends? */ + ((PC - fault_PC) == 6) && /* 6 byte instruction? */ + (fault_PC & 0x80000000) && /* in system space? */ + (((cpu_idle_mask & VAX_IDLE_VMS) && /* VMS 5.0 and 5.1 */ + (PSL_GETIPL (PSL) == 0x3) && /* at IPL 3 */ + (PSL_IS & PSL)) || /* on the interrupt stack */ + ((((cpu_idle_mask & VAX_IDLE_ULTOLD) && /* running Old Ultrix or friends? */ (PSL_GETIPL (PSL) == 0x1)) || /* at IPL 1? */ ((cpu_idle_mask & VAX_IDLE_QUAD) && /* running Quasijarus or friends? */ (PSL_GETIPL (PSL) == 0x0))) && /* at IPL 0? */ - (fault_PC & 0x80000000) && /* in system space? */ - ((PC - fault_PC) == 6) && /* 6 byte instruction? */ - ((fault_PC & 0x7fffffff) < 0x4000))) /* in low system space? */ + ((fault_PC & 0x7fffffff) < 0x4000)))) /* in low system space? */ cpu_idle(); /* idle loop */ break;