All VAX: Defer taking any HALT action until pending events have fired

This commit is contained in:
Mark Pizzolato 2017-01-03 12:01:53 -08:00
parent 316565c45b
commit 2df1433d71

View file

@ -2586,12 +2586,10 @@ for ( ;; ) {
case HALT:
if (PSL & PSL_CUR) /* not kern? rsvd inst */
RSVD_INST_FAULT;
else if (cpu_unit.flags & UNIT_CONH) /* halt to console? */
cc = con_halt (CON_HLTINS, cc); /* enter firmware */
else {
/* allow potentially pending I/O (console output,
or other devices) to complete before dropping
back to scp */
or other devices) to complete before taking
the appropriate halt action */
while ((sim_clock_queue != QUEUE_LIST_END) &&
((sim_clock_queue->flags & UNIT_IDLE) == 0)) {
sim_interval = 0;
@ -2600,7 +2598,10 @@ for ( ;; ) {
ABORT (temp);
SET_IRQL; /* update interrupts */
}
ABORT (STOP_HALT); /* halt to simulator */
if (cpu_unit.flags & UNIT_CONH) /* halt to console? */
cc = con_halt (CON_HLTINS, cc); /* enter firmware */
else
ABORT (STOP_HALT); /* halt to simulator */
}
case NOP: