arch-arm: Fix initialization of PMU counters
A version of Linux kernel initializes counters before enabling them.
Without this change, gem5 overwrites the value of counter, which causes
incorrect counter values derived by kernel.
Change-Id: If0c515111103018d5f65f74434d7711a67aeaee4
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/16203
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
diff --git a/src/arch/arm/pmu.cc b/src/arch/arm/pmu.cc
index f6cf872..3042515 100644
--- a/src/arch/arm/pmu.cc
+++ b/src/arch/arm/pmu.cc
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2014, 2017-2018 ARM Limited
+ * Copyright (c) 2011-2014, 2017-2019 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -532,7 +532,10 @@
void
PMU::CounterState::attach(PMUEvent* event)
{
- value = 0;
+ if (!resetValue) {
+ value = 0;
+ resetValue = true;
+ }
sourceEvent = event;
sourceEvent->attachEvent(this);
}