diff --git a/VAX/vax_cpu.c b/VAX/vax_cpu.c index ee349b72..504015da 100644 --- a/VAX/vax_cpu.c +++ b/VAX/vax_cpu.c @@ -1,6 +1,6 @@ /* vax_cpu.c: VAX CPU - Copyright (c) 1998-2019, Robert M Supnik + Copyright (c) 1998-2020, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ cpu VAX central processor + 20-May-20 RMS Added idle test for VMS 5.0/5.1 (Mark Pizzolato) 23-Apr-19 RMS Added hook for unpredictable indexed immediate .aw 14-Apr-19 RMS Added hook for non-standard MxPR CC's 31-Mar-17 RMS Fixed uninitialized variable on FPD path (COVERITY) @@ -1580,13 +1581,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;