mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
target/arm: Enable trapping of ERET for FEAT_NV
When FEAT_NV is turned on via the HCR_EL2.NV bit, ERET instructions are trapped, with the same syndrome information as for the existing FEAT_FGT fine-grained trap (in the pseudocode this is handled in AArch64.CheckForEretTrap()). Rename the DisasContext and tbflag bits to reflect that they are no longer exclusively for FGT traps, and set the tbflag bit when FEAT_NV is enabled as well as when the FGT is enabled. 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>
This commit is contained in:
parent
5725977915
commit
e37e98b7f9
4 changed files with 16 additions and 7 deletions
|
@ -169,6 +169,7 @@ static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *env, int el, int fp_el,
|
|||
CPUARMTBFlags flags = {};
|
||||
ARMMMUIdx stage1 = stage_1_mmu_idx(mmu_idx);
|
||||
uint64_t tcr = regime_tcr(env, mmu_idx);
|
||||
uint64_t hcr = arm_hcr_el2_eff(env);
|
||||
uint64_t sctlr;
|
||||
int tbii, tbid;
|
||||
|
||||
|
@ -285,13 +286,21 @@ static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *env, int el, int fp_el,
|
|||
if (arm_fgt_active(env, el)) {
|
||||
DP_TBFLAG_ANY(flags, FGT_ACTIVE, 1);
|
||||
if (FIELD_EX64(env->cp15.fgt_exec[FGTREG_HFGITR], HFGITR_EL2, ERET)) {
|
||||
DP_TBFLAG_A64(flags, FGT_ERET, 1);
|
||||
DP_TBFLAG_A64(flags, TRAP_ERET, 1);
|
||||
}
|
||||
if (fgt_svc(env, el)) {
|
||||
DP_TBFLAG_ANY(flags, FGT_SVC, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* ERET can also be trapped for FEAT_NV. arm_hcr_el2_eff() takes care
|
||||
* of "is EL2 enabled" and the NV bit can only be set if FEAT_NV is present.
|
||||
*/
|
||||
if (el == 1 && (hcr & HCR_NV)) {
|
||||
DP_TBFLAG_A64(flags, TRAP_ERET, 1);
|
||||
}
|
||||
|
||||
if (cpu_isar_feature(aa64_mte, env_archcpu(env))) {
|
||||
/*
|
||||
* Set MTE_ACTIVE if any access may be Checked, and leave clear
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue