target/arm: Timer _EL02 registers UNDEF for E2H == 0
authorPeter Maydell <peter.maydell@linaro.org>
Thu, 7 Mar 2024 12:19:01 +0000 (12:19 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Thu, 7 Mar 2024 12:19:01 +0000 (12:19 +0000)
The timer _EL02 registers should UNDEF for invalid accesses from EL2
or EL3 when HCR_EL2.E2H == 0, not take a cp access trap.  We were
delivering the exception to EL2 with the wrong syndrome.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20240301183219.2424889-3-peter.maydell@linaro.org

target/arm/helper.c

index 90c4fb72ce4afdf2d38b9dc46c50ab370ed7b00d..978df6f28233784d2987bc701b64c7e33e5ccf4f 100644 (file)
@@ -6551,7 +6551,7 @@ static CPAccessResult e2h_access(CPUARMState *env, const ARMCPRegInfo *ri,
         return CP_ACCESS_OK;
     }
     if (!(arm_hcr_el2_eff(env) & HCR_E2H)) {
-        return CP_ACCESS_TRAP;
+        return CP_ACCESS_TRAP_UNCATEGORIZED;
     }
     return CP_ACCESS_OK;
 }