target/arm: Implement ARMv8.4-PMU extension
commit15dd1ebda4a6ef928d484c5a4f48b8ccb7438bb2
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 14 Feb 2020 17:51:09 +0000 (14 17:51 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 21 Feb 2020 16:07:01 +0000 (21 16:07 +0000)
tree299b84f47cf7a09b77637841406d8824ec80b6f4
parent0727f63b1ecf765ebc48266f616f8fc362dc7fbc
target/arm: Implement ARMv8.4-PMU extension

The ARMv8.4-PMU extension adds:
 * one new required event, STALL
 * one new system register PMMIR_EL1

(There are also some more L1-cache related events, but since
we don't implement any cache we don't provide these, in the
same way we don't provide the base-PMUv3 cache events.)

The STALL event "counts every attributable cycle on which no
attributable instruction or operation was sent for execution on this
PE".  QEMU doesn't stall in this sense, so this is another
always-reads-zero event.

The PMMIR_EL1 register is a read-only register providing
implementation-specific information about the PMU; currently it has
only one field, SLOTS, which defines behaviour of the STALL_SLOT PMU
event.  Since QEMU doesn't implement the STALL_SLOT event, we can
validly make the register read zero.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20200214175116.9164-15-peter.maydell@linaro.org
target/arm/cpu.h
target/arm/helper.c