mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 17:23:56 -06:00
target/arm: Honour VTCR_EL2 bits in Secure EL2
In regime_tcr() we return the appropriate TCR register for the translation regime. For Secure EL2, we return the VSTCR_EL2 value, but in this translation regime some fields that control behaviour are in VTCR_EL2. When this code was originally written (as the comment notes), QEMU didn't care about any of those fields, but we have since added support for features such as LPA2 which do need the values from those fields. Synthesize a TCR value by merging in the relevant VTCR_EL2 fields to the VSTCR_EL2 value. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1103 Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220714132303.1287193-8-peter.maydell@linaro.org
This commit is contained in:
parent
cb4a0a3444
commit
f04383e749
2 changed files with 38 additions and 3 deletions
|
@ -1412,6 +1412,25 @@ FIELD(CPTR_EL3, TCPAC, 31, 1)
|
|||
#define TTBCR_SH1 (1U << 28)
|
||||
#define TTBCR_EAE (1U << 31)
|
||||
|
||||
FIELD(VTCR, T0SZ, 0, 6)
|
||||
FIELD(VTCR, SL0, 6, 2)
|
||||
FIELD(VTCR, IRGN0, 8, 2)
|
||||
FIELD(VTCR, ORGN0, 10, 2)
|
||||
FIELD(VTCR, SH0, 12, 2)
|
||||
FIELD(VTCR, TG0, 14, 2)
|
||||
FIELD(VTCR, PS, 16, 3)
|
||||
FIELD(VTCR, VS, 19, 1)
|
||||
FIELD(VTCR, HA, 21, 1)
|
||||
FIELD(VTCR, HD, 22, 1)
|
||||
FIELD(VTCR, HWU59, 25, 1)
|
||||
FIELD(VTCR, HWU60, 26, 1)
|
||||
FIELD(VTCR, HWU61, 27, 1)
|
||||
FIELD(VTCR, HWU62, 28, 1)
|
||||
FIELD(VTCR, NSW, 29, 1)
|
||||
FIELD(VTCR, NSA, 30, 1)
|
||||
FIELD(VTCR, DS, 32, 1)
|
||||
FIELD(VTCR, SL2, 33, 1)
|
||||
|
||||
/* Bit definitions for ARMv8 SPSR (PSTATE) format.
|
||||
* Only these are valid when in AArch64 mode; in
|
||||
* AArch32 mode SPSRs are basically CPSR-format.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue