arch-arm: Only increment SW PMU counters on writes to PMSWINC

When writing a bitmask of counters to PMSWINC, the PMU currently
increments the corresponding counters regardless of what they are
configured to count. According to the ARM ARM (D5.10.4), counters
should only be updated if they have been configured to count
software events (event type 0).

Change-Id: I5b2bc1fae55faa342b863721c9838342442831a9
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/4285
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
Jose Marinho
2017-07-28 15:28:02 +01:00
committed by Andreas Sandberg
parent 653d2ee29a
commit b277ad3bdb

View File

@@ -147,8 +147,10 @@ PMU::setMiscReg(int misc_reg, MiscReg val)
case MISCREG_PMSWINC:
for (int i = 0; i < counters.size(); ++i) {
CounterState &ctr(getCounter(i));
if (ctr.enabled && (val & (1 << i)))
if (ctr.enabled && (val & (1 << i))
&& ctr.eventId == ARCH_EVENT_SW_INCR ) {
++ctr.value;
}
}
break;