All VAX: Defer taking any HALT action until pending events have fired
This commit is contained in:
parent
316565c45b
commit
2df1433d71
1 changed files with 6 additions and 5 deletions
|
@ -2586,12 +2586,10 @@ for ( ;; ) {
|
||||||
case HALT:
|
case HALT:
|
||||||
if (PSL & PSL_CUR) /* not kern? rsvd inst */
|
if (PSL & PSL_CUR) /* not kern? rsvd inst */
|
||||||
RSVD_INST_FAULT;
|
RSVD_INST_FAULT;
|
||||||
else if (cpu_unit.flags & UNIT_CONH) /* halt to console? */
|
|
||||||
cc = con_halt (CON_HLTINS, cc); /* enter firmware */
|
|
||||||
else {
|
else {
|
||||||
/* allow potentially pending I/O (console output,
|
/* allow potentially pending I/O (console output,
|
||||||
or other devices) to complete before dropping
|
or other devices) to complete before taking
|
||||||
back to scp */
|
the appropriate halt action */
|
||||||
while ((sim_clock_queue != QUEUE_LIST_END) &&
|
while ((sim_clock_queue != QUEUE_LIST_END) &&
|
||||||
((sim_clock_queue->flags & UNIT_IDLE) == 0)) {
|
((sim_clock_queue->flags & UNIT_IDLE) == 0)) {
|
||||||
sim_interval = 0;
|
sim_interval = 0;
|
||||||
|
@ -2600,7 +2598,10 @@ for ( ;; ) {
|
||||||
ABORT (temp);
|
ABORT (temp);
|
||||||
SET_IRQL; /* update interrupts */
|
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:
|
case NOP:
|
||||||
|
|
Loading…
Add table
Reference in a new issue