target/arm: Report correct syndrome for UNDEFINED CNTPS_*_EL1 from EL2 and NS EL1
The access pseudocode for the CNTPS_TVAL_EL1, CNTPS_CTL_EL1 and CNTPS_CVAL_EL1 secure timer registers says that they are UNDEFINED from EL2 or NS EL1. We incorrectly return CP_ACCESS_TRAP from the access function in these cases, which means that we report the wrong syndrome value to the target EL. Use CP_ACCESS_TRAP_UNCATEGORIZED, which reports the correct syndrome value for an UNDEFINED instruction. Cc: qemu-stable@nongnu.org Fixes: b4d3978c2fd ("target-arm: Add the AArch64 view of the Secure physical timer") Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20250130182309.717346-2-peter.maydell@linaro.org
This commit is contained in:
parent
40efe733e1
commit
b819fd6994
@ -2385,7 +2385,7 @@ static CPAccessResult gt_stimer_access(CPUARMState *env,
|
|||||||
switch (arm_current_el(env)) {
|
switch (arm_current_el(env)) {
|
||||||
case 1:
|
case 1:
|
||||||
if (!arm_is_secure(env)) {
|
if (!arm_is_secure(env)) {
|
||||||
return CP_ACCESS_TRAP;
|
return CP_ACCESS_TRAP_UNCATEGORIZED;
|
||||||
}
|
}
|
||||||
if (!(env->cp15.scr_el3 & SCR_ST)) {
|
if (!(env->cp15.scr_el3 & SCR_ST)) {
|
||||||
return CP_ACCESS_TRAP_EL3;
|
return CP_ACCESS_TRAP_EL3;
|
||||||
@ -2393,7 +2393,7 @@ static CPAccessResult gt_stimer_access(CPUARMState *env,
|
|||||||
return CP_ACCESS_OK;
|
return CP_ACCESS_OK;
|
||||||
case 0:
|
case 0:
|
||||||
case 2:
|
case 2:
|
||||||
return CP_ACCESS_TRAP;
|
return CP_ACCESS_TRAP_UNCATEGORIZED;
|
||||||
case 3:
|
case 3:
|
||||||
return CP_ACCESS_OK;
|
return CP_ACCESS_OK;
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user