summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNikos Nikoleris <nikos.nikoleris@gmail.com>2015-01-20 14:15:27 -0600
committerNikos Nikoleris <nikos.nikoleris@gmail.com>2015-01-20 14:15:27 -0600
commita35283ac65f956a88c796972c77f0ac5d9d8a180 (patch)
tree2afa07212b24a2ddea4650c5123cd2bd4eed60ec /src
parent3cb9c361e2ad567f821f1377de77035a16390be1 (diff)
downloadgem5-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.cc5
-rw-r--r--src/cpu/simple/probes/simpoint.cc3
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();