On Tue, 18 Feb 2020 at 19:10, Richard Henderson <richard.hender...@linaro.org> wrote: > > This bit traps EL1 access to tlb maintenance insns. > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > target/arm/helper.c | 85 +++++++++++++++++++++++++++++---------------- > 1 file changed, 55 insertions(+), 30 deletions(-) > > diff --git a/target/arm/helper.c b/target/arm/helper.c > index 21ee9cf7de..87c0cf4a96 100644 > --- a/target/arm/helper.c > +++ b/target/arm/helper.c > @@ -563,6 +563,16 @@ static CPAccessResult access_tacr(CPUARMState *env, > const ARMCPRegInfo *ri, > return CP_ACCESS_OK; > } > > +/* Check for traps from EL1 due to HCR_EL2.TTLB. */ > +static CPAccessResult access_ttlb(CPUARMState *env, const ARMCPRegInfo *ri, > + bool isread) > +{ > + if (arm_current_el(env) == 1 && (arm_hcr_el2_eff(env) & HCR_TTLB)) { > + return CP_ACCESS_TRAP_EL2; > + } > + return CP_ACCESS_OK; > +}
The set of operations this traps differs when ARMv8.4-TLBI is implemented. It looks like you've applied this access fn to the wider with-v8.4-TLBI set? (eg TLBI_VMALLE1 is only trapped with ARMv8.4-TLBI, not without.) thanks -- PMM