cpu: Fix Minor drain issues when switched out
The Minor CPU currently doesn't drain properly when it is switched out. This happens because Fetch 1 expects to be in the FetchHalted state when it is drained. However, because the CPU is switched out, it is stuck in the FetchWaitingForPC state. Fix this by ignoring drain requests and returning DrainState::Drained from MinorCPU::drain() if the CPU is switched out. This is always safe since a switched out CPU, by definition, doesn't have any instructions in flight.
This commit is contained in:
parent
c50e429001
commit
f73b05431a
|
@ -201,6 +201,11 @@ MinorCPU::startup()
|
|||
DrainState
|
||||
MinorCPU::drain()
|
||||
{
|
||||
if (switchedOut()) {
|
||||
DPRINTF(Drain, "Minor CPU switched out, draining not needed.\n");
|
||||
return DrainState::Drained;
|
||||
}
|
||||
|
||||
DPRINTF(Drain, "MinorCPU drain\n");
|
||||
|
||||
/* Need to suspend all threads and wait for Execute to idle.
|
||||
|
|
Loading…
Reference in a new issue