]> git.ipfire.org Git - thirdparty/qemu.git/commit
target/arm: Set IL bit for pauth, SVE access, BTI trap syndromes
authorPeter Maydell <peter.maydell@linaro.org>
Mon, 20 Nov 2023 15:01:21 +0000 (15:01 +0000)
committerMichael Tokarev <mjt@tls.msk.ru>
Tue, 5 Dec 2023 09:32:36 +0000 (12:32 +0300)
commit169c593f78d936e85721acf54ff47dc436c4aefc
tree72b6cb4e83a65cf8368802cc70a307aac3b5935b
parent5cf2cf1f9f3f5b8e03ae6bad7604750eb8dd28d4
target/arm: Set IL bit for pauth, SVE access, BTI trap syndromes

The syndrome register value always has an IL field at bit 25, which
is 0 for a trap on a 16 bit instruction, and 1 for a trap on a 32
bit instruction (or for exceptions which aren't traps on a known
instruction, like PC alignment faults). This means that our
syn_*() functions should always either take an is_16bit argument to
determine whether to set the IL bit, or else unconditionally set it.

We missed setting the IL bit for the syndrome for three kinds of trap:
 * an SVE access exception
 * a pointer authentication check failure
 * a BTI (branch target identification) check failure

All of these traps are AArch64 only, and so the instruction causing
the trap is always 64 bit. This means we can unconditionally set
the IL bit in the syn_*() function.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20231120150121.3458408-1-peter.maydell@linaro.org
Cc: qemu-stable@nongnu.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
(cherry picked from commit 11a3c4a286d5dc603582ea0a1fca62c2ec0a1aee)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
target/arm/syndrome.h