From 09f18ec2ba89124fd13ddd3bd4e53b3fb0272f64 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Mon, 18 May 2020 06:26:10 -0700 Subject: [PATCH] VAX: Add idle support for VMS V5.0 and V5.1 As discussed in #853 --- VAX/vax_cpu.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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;