diff options
author | Nikos Nikoleris <nikos.nikoleris@gmail.com> | 2015-01-20 14:15:27 -0600 |
---|---|---|
committer | Nikos Nikoleris <nikos.nikoleris@gmail.com> | 2015-01-20 14:15:27 -0600 |
commit | a35283ac65f956a88c796972c77f0ac5d9d8a180 (patch) | |
tree | 2afa07212b24a2ddea4650c5123cd2bd4eed60ec /src | |
parent | 3cb9c361e2ad567f821f1377de77035a16390be1 (diff) | |
download | gem5-a35283ac65f956a88c796972c77f0ac5d9d8a180.tar.xz |
cpu: commit probe notification on every microop or macroop
The ppCommit should notify the attached listener every time the cpu commits
a microop or non microcoded insturction. The listener can then decide
whether it will process only the last microop (eg. SimPoint probe).
Committed by: Nilay Vaish <nilay@cs.wisc.edu>
Diffstat (limited to 'src')
-rw-r--r-- | src/cpu/simple/atomic.cc | 5 | ||||
-rw-r--r-- | src/cpu/simple/probes/simpoint.cc | 3 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/cpu/simple/atomic.cc b/src/cpu/simple/atomic.cc index aeaebcdb8..d1298e3cc 100644 --- a/src/cpu/simple/atomic.cc +++ b/src/cpu/simple/atomic.cc @@ -580,10 +580,7 @@ AtomicSimpleCPU::tick() // keep an instruction count if (fault == NoFault) { countInst(); - if (!curStaticInst->isMicroop() || - curStaticInst->isLastMicroop()) { - ppCommit->notify(std::make_pair(thread, curStaticInst)); - } + ppCommit->notify(std::make_pair(thread, curStaticInst)); } else if (traceData && !DTRACE(ExecFaulting)) { delete traceData; diff --git a/src/cpu/simple/probes/simpoint.cc b/src/cpu/simple/probes/simpoint.cc index f2c0be62b..2de3cd420 100644 --- a/src/cpu/simple/probes/simpoint.cc +++ b/src/cpu/simple/probes/simpoint.cc @@ -79,6 +79,9 @@ SimPoint::profile(const std::pair<SimpleThread*, StaticInstPtr>& p) SimpleThread* thread = p.first; const StaticInstPtr &inst = p.second; + if (inst->isMicroop() && !inst->isLastMicroop()) + return; + if (!currentBBVInstCount) currentBBV.first = thread->pcState().instAddr(); |