aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSolomon Tan <root@wjsota.com>2025-07-01 15:08:25 +0100
committerPeter Maydell <peter.maydell@linaro.org>2025-07-01 15:08:25 +0100
commit9a3bf0e0ab628de7051b41a88c4628aa9e4d311b (patch)
tree125188bad528fd15a3851bb67b16e80694b77996
parenta89d18919e4b9a3f8bc67c43e4577ae76ff9ee41 (diff)
downloadqemu-9a3bf0e0ab628de7051b41a88c4628aa9e4d311b.zip
qemu-9a3bf0e0ab628de7051b41a88c4628aa9e4d311b.tar.gz
qemu-9a3bf0e0ab628de7051b41a88c4628aa9e4d311b.tar.bz2
target/arm: Make RETA[AB] UNDEF when pauth is not implemented
According to the Arm A-profile A64 Instruction Set Architecture, RETA[AB] should be decoded as UNDEF if the pauth feature is not implemented. We got this right in the initial implementation, but accidentally dropped the feature-check when we converted these insns to decodetree. Cc: qemu-stable@nongnu.org Fixes: 0ebbe9021254f ("target/arm: Convert BRA[AB]Z, BLR[AB]Z, RETA[AB] to decodetree") Signed-off-by: Solomon Tan <root@wjsota.com> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20250616171549.59190-1-root@wjsota.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--target/arm/tcg/translate-a64.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
index ac80f57..d0719b5 100644
--- a/target/arm/tcg/translate-a64.c
+++ b/target/arm/tcg/translate-a64.c
@@ -1816,6 +1816,10 @@ static bool trans_RETA(DisasContext *s, arg_reta *a)
{
TCGv_i64 dst;
+ if (!dc_isar_feature(aa64_pauth, s)) {
+ return false;
+ }
+
dst = auth_branch_target(s, cpu_reg(s, 30), cpu_X[31], !a->m);
gen_a64_set_pc(s, dst);
s->base.is_jmp = DISAS_JUMP;