A few minor fixes to sampling... seems to work now for the base case
authorSteve Reinhardt <stever@eecs.umich.edu>
Fri, 24 Oct 2003 04:52:46 +0000 (21:52 -0700)
committerSteve Reinhardt <stever@eecs.umich.edu>
Fri, 24 Oct 2003 04:52:46 +0000 (21:52 -0700)
of two CPUs and one switch-over event.  Still some stats glitches though.

cpu/simple_cpu/simple_cpu.cc:
    Schedule switched-to CPU right on curTick so we don't lose a cycle.
    Remember to switch out old CPU.

--HG--
extra : convert_revision : f1bf21cac054c74f59770d8b20b30118f46be6f1

cpu/simple_cpu/simple_cpu.cc

index c96e31cb011d169817f65ddcf2ab3181ae0585a3..41e3de24eff02c723350f813a8b85187835b76f3 100644 (file)
@@ -204,9 +204,11 @@ SimpleCPU::takeOverFrom(BaseCPU *oldCPU)
         ExecContext *xc = execContexts[i];
         if (xc->status() == ExecContext::Active && _status != Running) {
             _status = Running;
-            tickEvent.schedule(curTick + 1);
+            tickEvent.schedule(curTick);
         }
     }
+
+    oldCPU->switchOut();
 }
 
 
@@ -772,7 +774,8 @@ CREATE_SIM_OBJECT(SimpleCPU)
     cpu = new SimpleCPU(getInstanceName(), workload,
                         max_insts_any_thread, max_insts_all_threads,
                         max_loads_any_thread, max_loads_all_threads,
-                        icache->getInterface(), dcache->getInterface());
+                        (icache) ? icache->getInterface() : NULL,
+                        (dcache) ? dcache->getInterface() : NULL);
 
 #endif // FULL_SYSTEM