Analysis of the GCOS simulator code shows that it is mucking about with the SCU data and breaking RCU.
instruction_counter = instruction_counter + increment +1; scu.rfi = "1"b; /* Refetch faulted instruction. */ scu.if = "1"b; /* Turn on indicator that instruction faulted. */
I will have to look at doRCU() and make sure the the scu.rfi and scu.if bits are being handled correctly.
scu.ilc (TPR.CA) looks ok;
scu.rfi is ignored by RCU.
scu.if (cu . FIF) is being processed in a way that runs counter to what this code expects; it looks like the first instruction is going to be skipped.
scu.rfi is word 5, bit 27. "Restart this instruction"
The restart of the BAR code is almost certainly incorrect.
Rewrote the a lot of fault handling code; but it looks like a broke something subtle; MR12.3_install was taking about 40 minute to run; 12.3LDD_STANDARD_CF0019_2 took 23 minutes alone, and at 55 minutes it only started 12.3LDD_STANDARD_CF0019_4. Compared it to an earlier log; it is running at about half speed.
Ahhh. I turn the C optimizer off to debug something else. Restarting….