[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 4/8] target/arm: Don't allow RES0 CNTHCTL_EL2 bits to be written
From: |
Peter Maydell |
Subject: |
[PATCH 4/8] target/arm: Don't allow RES0 CNTHCTL_EL2 bits to be written |
Date: |
Fri, 1 Mar 2024 18:32:15 +0000 |
Don't allow the guest to write CNTHCTL_EL2 bits which don't exist.
This is not strictly architecturally required, but it is how we've
tended to implement registers more recently.
In particular, bits [19:18] are only present with FEAT_RME,
and bits [17:12] will only be present with FEAT_ECV.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
target/arm/helper.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/target/arm/helper.c b/target/arm/helper.c
index 1c82d12a883..8ec61c12440 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -2968,6 +2968,24 @@ static void gt_cnthctl_write(CPUARMState *env, const
ARMCPRegInfo *ri,
{
ARMCPU *cpu = env_archcpu(env);
uint32_t oldval = env->cp15.cnthctl_el2;
+ uint32_t valid_mask =
+ R_CNTHCTL_EL0PCTEN_MASK |
+ R_CNTHCTL_EL0VCTEN_MASK |
+ R_CNTHCTL_EVNTEN_MASK |
+ R_CNTHCTL_EVNTDIR_MASK |
+ R_CNTHCTL_EVNTI_MASK |
+ R_CNTHCTL_EL0VTEN_MASK |
+ R_CNTHCTL_EL0PTEN_MASK |
+ R_CNTHCTL_EL1PCTEN_MASK |
+ R_CNTHCTL_EL1PTEN_MASK;
+
+ if (cpu_isar_feature(aa64_rme, cpu)) {
+ valid_mask |= R_CNTHCTL_CNTVMASK_MASK | R_CNTHCTL_CNTPMASK_MASK;
+ }
+
+ /* Clear RES0 bits */
+ value &= valid_mask;
+
raw_write(env, ri, value);
if ((oldval ^ value) & R_CNTHCTL_CNTVMASK_MASK) {
--
2.34.1
- Re: [PATCH 8/8] target/arm: Enable FEAT_ECV for 'max' CPU, (continued)
- [PATCH 1/8] target/arm: Move some register related defines to internals.h, Peter Maydell, 2024/03/01
- [PATCH 4/8] target/arm: Don't allow RES0 CNTHCTL_EL2 bits to be written,
Peter Maydell <=
- [PATCH 6/8] target/arm: Define CNTPCTSS_EL0 and CNTVCTSS_EL0, Peter Maydell, 2024/03/01
- [PATCH 2/8] target/arm: Timer _EL02 registers UNDEF for E2H == 0, Peter Maydell, 2024/03/01
- [PATCH 5/8] target/arm: Implement new FEAT_ECV trap bits, Peter Maydell, 2024/03/01
- [PATCH 7/8] target/arm: Implement FEAT_ECV CNTPOFF_EL2 handling, Peter Maydell, 2024/03/01