]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
target/arm: Report correct syndrome for UNDEFINED AT ops with wrong NSE, NS
authorPeter Maydell <peter.maydell@linaro.org>
Thu, 30 Jan 2025 18:22:57 +0000 (18:22 +0000)
committerMichael Tokarev <mjt@tls.msk.ru>
Mon, 24 Feb 2025 21:11:58 +0000 (00:11 +0300)
R_NYXTL says that these AT insns should be UNDEFINED if they
would operate on an EL lower than EL3 and SCR_EL3.{NSE,NS} is
set to the Reserved {1, 0}. We were incorrectly reporting
them with the wrong syndrome; use CP_ACCESS_TRAP_UNCATEGORIZED
so they are reported as UNDEFINED.

Cc: qemu-stable@nongnu.org
Fixes: 1acd00ef1410 ("target/arm/helper: Check SCR_EL3.{NSE, NS} encoding for AT instructions")
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20250130182309.717346-3-peter.maydell@linaro.org
(cherry picked from commit 1960d9701ef7ed8d24e98def767bbf05d63e6992)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
target/arm/helper.c

index 8a0065ef6071f9e1e3cd5d6f6a6e737738fd7607..32cf6039e35c5a12c6734ae7e808ffb71ad68893 100644 (file)
@@ -3868,7 +3868,7 @@ static CPAccessResult at_e012_access(CPUARMState *env, const ARMCPRegInfo *ri,
      * scr_write() ensures that the NSE bit is not set otherwise.
      */
     if ((env->cp15.scr_el3 & (SCR_NSE | SCR_NS)) == SCR_NSE) {
-        return CP_ACCESS_TRAP;
+        return CP_ACCESS_TRAP_UNCATEGORIZED;
     }
     return CP_ACCESS_OK;
 }