aboutsummaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2024-01-09 14:43:46 +0000
committerPeter Maydell <peter.maydell@linaro.org>2024-01-09 14:43:46 +0000
commitb9377d1c5f366e3c914fb32ca13a2178ea901b2d (patch)
tree3b0c224c599e20a257a1da1c1894056aad6c7665 /net
parente37e98b7f9f69240f73ed7050cd182466ddf3629 (diff)
downloadqemu-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