diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2024-01-09 14:43:46 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2024-01-09 14:43:46 +0000 |
commit | b9377d1c5f366e3c914fb32ca13a2178ea901b2d (patch) | |
tree | 3b0c224c599e20a257a1da1c1894056aad6c7665 /net | |
parent | e37e98b7f9f69240f73ed7050cd182466ddf3629 (diff) | |
download | qemu-b9377d1c5f366e3c914fb32ca13a2178ea901b2d.zip qemu-b9377d1c5f366e3c914fb32ca13a2178ea901b2d.tar.gz qemu-b9377d1c5f366e3c914fb32ca13a2178ea901b2d.tar.bz2 |
target/arm: Always honour HCR_EL2.TSC when HCR_EL2.NV is set
The HCR_EL2.TSC trap for trapping EL1 execution of SMC instructions
has a behaviour change for FEAT_NV when EL3 is not implemented:
* in older architecture versions TSC was required to have no
effect (i.e. the SMC insn UNDEFs)
* with FEAT_NV, when HCR_EL2.NV == 1 the trap must apply
(i.e. SMC traps to EL2, as it already does in all cases when
EL3 is implemented)
* in newer architecture versions, the behaviour either without
FEAT_NV or with FEAT_NV and HCR_EL2.NV == 0 is relaxed to
an IMPDEF choice between UNDEF and trap-to-EL2 (i.e. it is
permitted to always honour HCR_EL2.TSC) for AArch64 only
Add the condition to honour the trap bit when HCR_EL2.NV == 1. We
leave the HCR_EL2.NV == 0 case with the existing (UNDEF) behaviour,
as our IMPDEF choice (both because it avoids a behaviour change
for older CPU models and because we'd have to distinguish AArch32
from AArch64 if we opted to trap to EL2).
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Tested-by: Miguel Luis <miguel.luis@oracle.com>
Diffstat (limited to 'net')
0 files changed, 0 insertions, 0 deletions