diff options
author | Geoffrey Blake <Geoffrey.Blake@arm.com> | 2016-04-05 05:29:02 -0500 |
---|---|---|
committer | Geoffrey Blake <Geoffrey.Blake@arm.com> | 2016-04-05 05:29:02 -0500 |
commit | f948f9fca987b25ef0716e87fdc4e874fb607c14 (patch) | |
tree | e00e191ba53d4e26f84197453a7361d381a33207 /src | |
parent | df36764e91bc96d731cbd403c3a4527248eb403c (diff) | |
download | gem5-f948f9fca987b25ef0716e87fdc4e874fb607c14.tar.xz |
cpu: Query CPU for inst executed from Python
This patch adds the ability for the simulator to query the number of
instructions a CPU has executed so far per hw-thread. This can be used
to enable more flexible periodic events such as taking checkpoints
starting 1s into simulation and X instructions thereafter.
Diffstat (limited to 'src')
-rw-r--r-- | src/cpu/BaseCPU.py | 1 | ||||
-rw-r--r-- | src/cpu/base.cc | 6 | ||||
-rw-r--r-- | src/cpu/base.hh | 9 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/cpu/BaseCPU.py b/src/cpu/BaseCPU.py index a54a63b46..4d114cbdc 100644 --- a/src/cpu/BaseCPU.py +++ b/src/cpu/BaseCPU.py @@ -101,6 +101,7 @@ class BaseCPU(MemObject): Counter totalInsts(); void scheduleInstStop(ThreadID tid, Counter insts, const char *cause); void scheduleLoadStop(ThreadID tid, Counter loads, const char *cause); + uint64_t getCurrentInstCount(ThreadID tid); ''') @classmethod diff --git a/src/cpu/base.cc b/src/cpu/base.cc index 22fca4dc5..624843f42 100644 --- a/src/cpu/base.cc +++ b/src/cpu/base.cc @@ -691,6 +691,12 @@ BaseCPU::scheduleInstStop(ThreadID tid, Counter insts, const char *cause) comInstEventQueue[tid]->schedule(event, now + insts); } +uint64_t +BaseCPU::getCurrentInstCount(ThreadID tid) +{ + return Tick(comInstEventQueue[tid]->getCurTick()); +} + AddressMonitor::AddressMonitor() { armed = false; waiting = false; diff --git a/src/cpu/base.hh b/src/cpu/base.hh index 87f27acca..438c38812 100644 --- a/src/cpu/base.hh +++ b/src/cpu/base.hh @@ -465,6 +465,15 @@ class BaseCPU : public MemObject */ void scheduleLoadStop(ThreadID tid, Counter loads, const char *cause); + /** + * Get the number of instructions executed by the specified thread + * on this CPU. Used by Python to control simulation. + * + * @param tid Thread monitor + * @return Number of instructions executed + */ + uint64_t getCurrentInstCount(ThreadID tid); + public: /** * @{ |