summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2019-10-13 23:56:30 -0700
committerGabe Black <gabeblack@google.com>2019-10-25 22:42:31 +0000
commit54b9d49ec79b8c93ce914d4c3600661363e829d5 (patch)
tree2b0d3e6988b697c69cb46cdb2567ac0cb283f784 /src/arch
parent272a43175fc0de46ba1e264b3b1add5ea01d7e5d (diff)
downloadgem5-54b9d49ec79b8c93ce914d4c3600661363e829d5.tar.xz
fastmodel: Implement getCurrentInstCount.
This uses the step counter the iris API provides. Change-Id: Ic916888fa256d0aa65042d3e6695d9bf4ba32c86 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/22111 Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/arm/fastmodel/iris/thread_context.cc9
-rw-r--r--src/arch/arm/fastmodel/iris/thread_context.hh2
2 files changed, 10 insertions, 1 deletions
diff --git a/src/arch/arm/fastmodel/iris/thread_context.cc b/src/arch/arm/fastmodel/iris/thread_context.cc
index 79c9062cb..43be17142 100644
--- a/src/arch/arm/fastmodel/iris/thread_context.cc
+++ b/src/arch/arm/fastmodel/iris/thread_context.cc
@@ -163,6 +163,15 @@ ThreadContext::~ThreadContext()
client.unregisterEventCallback("ec_IRIS_INSTANCE_REGISTRY_CHANGED");
}
+Tick
+ThreadContext::getCurrentInstCount()
+{
+ uint64_t count;
+ auto ret = call().step_getStepCounterValue(_instId, count, "instruction");
+ panic_if(ret != iris::E_ok, "Failed to get instruction count.");
+ return count;
+}
+
ThreadContext::Status
ThreadContext::status() const
{
diff --git a/src/arch/arm/fastmodel/iris/thread_context.hh b/src/arch/arm/fastmodel/iris/thread_context.hh
index c07c642fb..da9666161 100644
--- a/src/arch/arm/fastmodel/iris/thread_context.hh
+++ b/src/arch/arm/fastmodel/iris/thread_context.hh
@@ -100,7 +100,7 @@ class ThreadContext : public ::ThreadContext
void serviceInstCountEvents(Tick count) override {}
void scheduleInstCountEvent(Event *event, Tick count) override {}
void descheduleInstCountEvent(Event *event) override {}
- Tick getCurrentInstCount() override { return 0; }
+ Tick getCurrentInstCount() override;
virtual Counter
totalInsts()