4c09abeae8
In a two-stage translation, the result of the BTI guarded bit should be the guarded bit from the first stage of translation, as there is no BTI guard information in stage two. Our code tried to do this, but got it wrong, because we currently have two fields where the GP bit information might live (ARMCacheAttrs::guarded and CPUTLBEntryFull::extra::arm::guarded), and we were storing the GP bit in the latter during the stage 1 walk but trying to copy the former in combine_cacheattrs(). Remove the duplicated storage, and always use the field in CPUTLBEntryFull; correctly propagate the stage 1 value to the output in get_phys_addr_twostage(). Note for stable backports: in v8.0 and earlier the field is named result->f.guarded, not result->f.extra.arm.guarded. Cc: qemu-stable@nongnu.org Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1950 Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20231031173723.26582-1-peter.maydell@linaro.org |
||
---|---|---|
.. | ||
hvf | ||
tcg | ||
arch_dump.c | ||
arm-powerctl.c | ||
arm-powerctl.h | ||
arm-qmp-cmds.c | ||
common-semi-target.h | ||
cortex-regs.c | ||
cpregs.h | ||
cpu64.c | ||
cpu-features.h | ||
cpu-param.h | ||
cpu-qom.h | ||
cpu.c | ||
cpu.h | ||
debug_helper.c | ||
gdbstub64.c | ||
gdbstub.c | ||
helper.c | ||
helper.h | ||
hvf_arm.h | ||
hyp_gdbstub.c | ||
idau.h | ||
internals.h | ||
Kconfig | ||
kvm64.c | ||
kvm_arm.h | ||
kvm-consts.h | ||
kvm-stub.c | ||
kvm.c | ||
machine.c | ||
meson.build | ||
op_addsub.h | ||
ptw.c | ||
syndrome.h | ||
tcg-stubs.c | ||
trace-events | ||
trace.h | ||
vfp_helper.c |