target/arm: fix handling of HCR.FB

HCR should be applied when NS is set, not when it is cleared.

Signed-off-by: Rémi Denis-Courmont <remi.denis.courmont@huawei.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Rémi Denis-Courmont 2020-11-02 16:52:15 +00:00 committed by Peter Maydell
parent d1a9254be5
commit 373e7ffde9
1 changed files with 2 additions and 3 deletions

View File

@ -731,13 +731,12 @@ static void tlbimvaa_is_write(CPUARMState *env, const ARMCPRegInfo *ri,
/* /*
* Non-IS variants of TLB operations are upgraded to * Non-IS variants of TLB operations are upgraded to
* IS versions if we are at NS EL1 and HCR_EL2.FB is set to * IS versions if we are at EL1 and HCR_EL2.FB is effectively set to
* force broadcast of these operations. * force broadcast of these operations.
*/ */
static bool tlb_force_broadcast(CPUARMState *env) static bool tlb_force_broadcast(CPUARMState *env)
{ {
return (env->cp15.hcr_el2 & HCR_FB) && return arm_current_el(env) == 1 && (arm_hcr_el2_eff(env) & HCR_FB);
arm_current_el(env) == 1 && arm_is_secure_below_el3(env);
} }
static void tlbiall_write(CPUARMState *env, const ARMCPRegInfo *ri, static void tlbiall_write(CPUARMState *env, const ARMCPRegInfo *ri,