From 283d2890fe5faf4faf6d0da56424adc5e25e0d45 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Thu, 10 Dec 2015 15:54:25 -0800 Subject: [PATCH] VAX: Change BBC and BBS instructions to not be include the idle/halt testing The MicroVAX II boot ROM has code uses one of these instructions with the data being referenced somewhere in Qbus space. This is not supposed to be done according to the architecture specifications, but it must have worked on real hardware. In any case, as a consequence of this reference to I/O space, these otherwise non-data modifying instructions can have side effects or reference data which may change even in an instruction looping on itself. Given that potential, such use isn't an infinite loop which would otherwise inspire a drop back to scp. --- VAX/vax_cpu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VAX/vax_cpu.c b/VAX/vax_cpu.c index 99e12845..1b4dd90e 100644 --- a/VAX/vax_cpu.c +++ b/VAX/vax_cpu.c @@ -2422,7 +2422,7 @@ for ( ;; ) { case BBS: if (op_bb_n (opnd, acc)) { /* br if bit set */ - BRANCHB (brdisp); + BRANCHB_ALWAYS (brdisp); if (((PSL & PSL_IS) != 0) && /* on IS? */ (PSL_GETIPL (PSL) == 0x3) && /* at IPL 3? */ ((cpu_idle_mask & VAX_IDLE_VMS) != 0)) /* running VMS? */ @@ -2432,7 +2432,7 @@ for ( ;; ) { case BBC: if (!op_bb_n (opnd, acc)) /* br if bit clr */ - BRANCHB (brdisp); + BRANCHB_ALWAYS (brdisp); break; case BBSS: case BBSSI: