diff options
Diffstat (limited to 'cpu/o3/iew_impl.hh')
-rw-r--r-- | cpu/o3/iew_impl.hh | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/cpu/o3/iew_impl.hh b/cpu/o3/iew_impl.hh index 42d83ee72..cbd7396f7 100644 --- a/cpu/o3/iew_impl.hh +++ b/cpu/o3/iew_impl.hh @@ -55,7 +55,11 @@ DefaultIEW<Impl>::LdWritebackEvent::process() //iewStage->ldstQueue.removeMSHR(inst->threadNumber,inst->seqNum); - if (inst->isSquashed() || iewStage->isSwitchedOut()) { + if (iewStage->isSwitchedOut()) { + inst = NULL; + return; + } else if (inst->isSquashed()) { + iewStage->wakeCPU(); inst = NULL; return; } @@ -441,7 +445,15 @@ template <class Impl> void DefaultIEW<Impl>::switchOut() { + cpu->signalSwitched(); +} + +template <class Impl> +void +DefaultIEW<Impl>::doSwitchOut() +{ switchedOut = true; + instQueue.switchOut(); ldstQueue.switchOut(); fuPool->switchOut(); |