111a112
> drainPending(false),
356c357,358
< isSwitchedOut()) {
---
> isSwitchedOut() ||
> drainPending) {
387c389
< DefaultFetch<Impl>::switchOut()
---
> DefaultFetch<Impl>::drain()
389,391c391,393
< // Fetch is ready to switch out at any time.
< switchedOut = true;
< cpu->signalSwitched();
---
> // Fetch is ready to drain at any time.
> cpu->signalDrained();
> drainPending = true;
396c398
< DefaultFetch<Impl>::doSwitchOut()
---
> DefaultFetch<Impl>::resume()
397a400,407
> drainPending = false;
> }
>
> template <class Impl>
> void
> DefaultFetch<Impl>::switchOut()
> {
> switchedOut = true;
501c511
< if (cacheBlocked || (interruptPending && flags == 0) || switchedOut) {
---
> if (cacheBlocked || (interruptPending && flags == 0) || drainPending) {