From: Steve Reinhardt Date: Fri, 24 Oct 2003 04:52:46 +0000 (-0700) Subject: A few minor fixes to sampling... seems to work now for the base case X-Git-Tag: m5_1.0_beta2~360 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cd6b6df581f554805a5a1388ccd78044d91a2663;p=gem5.git A few minor fixes to sampling... seems to work now for the base case 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 --- diff --git a/cpu/simple_cpu/simple_cpu.cc b/cpu/simple_cpu/simple_cpu.cc index c96e31cb0..41e3de24e 100644 --- a/cpu/simple_cpu/simple_cpu.cc +++ b/cpu/simple_cpu/simple_cpu.cc @@ -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