diff -r 25a1f46ce299 -r 4a48b644d5c8 src/cpu/o3/cpu.cc --- a/src/cpu/o3/cpu.cc Thu Dec 06 15:01:59 2012 -0500 +++ b/src/cpu/o3/cpu.cc Thu Dec 06 15:03:32 2012 -0500 @@ -1192,8 +1192,6 @@ setDrainState(Drainable::Drained); - BaseCPU::switchOut(); - if (drainManager) { DPRINTF(Drain, "CPU done draining, processing drain event\n"); drainManager->signalDrainDone(); @@ -1207,6 +1205,8 @@ void FullO3CPU::switchOut() { + BaseCPU::switchOut(); + fetch.switchOut(); rename.switchOut(); iew.switchOut(); diff -r 25a1f46ce299 -r 4a48b644d5c8 src/cpu/simple/atomic.cc --- a/src/cpu/simple/atomic.cc Thu Dec 06 15:01:59 2012 -0500 +++ b/src/cpu/simple/atomic.cc Thu Dec 06 15:03:32 2012 -0500 @@ -177,6 +177,8 @@ void AtomicSimpleCPU::switchOut() { + BaseSimpleCPU::switchOut(); + assert(_status == BaseSimpleCPU::Running || _status == Idle); _status = SwitchedOut; @@ -187,7 +189,7 @@ void AtomicSimpleCPU::takeOverFrom(BaseCPU *oldCPU) { - BaseCPU::takeOverFrom(oldCPU); + BaseSimpleCPU::takeOverFrom(oldCPU); assert(!tickEvent.scheduled()); diff -r 25a1f46ce299 -r 4a48b644d5c8 src/cpu/simple/timing.cc --- a/src/cpu/simple/timing.cc Thu Dec 06 15:01:59 2012 -0500 +++ b/src/cpu/simple/timing.cc Thu Dec 06 15:03:32 2012 -0500 @@ -163,6 +163,8 @@ void TimingSimpleCPU::switchOut() { + BaseSimpleCPU::switchOut(); + assert(_status == BaseSimpleCPU::Running || _status == Idle); _status = SwitchedOut; numCycles += curCycle() - previousCycle; @@ -177,7 +179,7 @@ void TimingSimpleCPU::takeOverFrom(BaseCPU *oldCPU) { - BaseCPU::takeOverFrom(oldCPU); + BaseSimpleCPU::takeOverFrom(oldCPU); // if any of this CPU's ThreadContexts are active, mark the CPU as // running and schedule its tick event.