make this parallel to the other cpu types so that resume works correctly.
authorLisa Hsu <hsul@eecs.umich.edu>
Mon, 23 Oct 2006 22:43:56 +0000 (18:43 -0400)
committerLisa Hsu <hsul@eecs.umich.edu>
Mon, 23 Oct 2006 22:43:56 +0000 (18:43 -0400)
--HG--
extra : convert_revision : 3c165af27ea0e6c7f2a17819c1717d8900f54cc1

src/cpu/simple/atomic.cc

index fe421ae6c8946efa42c2e2793ab1becce1c5bfcf..87ecafd6923b467bca4112fdbab45f591fbbebbf 100644 (file)
@@ -182,11 +182,14 @@ AtomicSimpleCPU::unserialize(Checkpoint *cp, const string &section)
 void
 AtomicSimpleCPU::resume()
 {
-    changeState(SimObject::Running);
-    if (thread->status() == ThreadContext::Active) {
+    if (_status != SwitchedOut && _status != Idle) {
         assert(system->getMemoryMode() == System::Atomic);
-        if (!tickEvent.scheduled())
-            tickEvent.schedule(curTick);
+
+        changeState(SimObject::Running);
+        if (thread->status() == ThreadContext::Active) {
+            if (!tickEvent.scheduled())
+                tickEvent.schedule(curTick);
+        }
     }
 }