arm: force flag recalculation when messing with DAIF
The recently introduced debug tests in kvm-unit-tests exposed an error in our handling of singlestep cause by stale hflags. This is caught by --enable-debug-tcg when running the tests. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reported-by: Andrew Jones <drjones@redhat.com> Tested-by: Andrew Jones <drjones@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220202122353.457084-1-alex.bennee@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>staging^2
parent
40874a383d
commit
c737d86804
|
@ -83,12 +83,14 @@ void HELPER(msr_i_daifset)(CPUARMState *env, uint32_t imm)
|
||||||
{
|
{
|
||||||
daif_check(env, 0x1e, imm, GETPC());
|
daif_check(env, 0x1e, imm, GETPC());
|
||||||
env->daif |= (imm << 6) & PSTATE_DAIF;
|
env->daif |= (imm << 6) & PSTATE_DAIF;
|
||||||
|
arm_rebuild_hflags(env);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HELPER(msr_i_daifclear)(CPUARMState *env, uint32_t imm)
|
void HELPER(msr_i_daifclear)(CPUARMState *env, uint32_t imm)
|
||||||
{
|
{
|
||||||
daif_check(env, 0x1f, imm, GETPC());
|
daif_check(env, 0x1f, imm, GETPC());
|
||||||
env->daif &= ~((imm << 6) & PSTATE_DAIF);
|
env->daif &= ~((imm << 6) & PSTATE_DAIF);
|
||||||
|
arm_rebuild_hflags(env);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Convert a softfloat float_relation_ (as returned by
|
/* Convert a softfloat float_relation_ (as returned by
|
||||||
|
|
Loading…
Reference in New Issue