On Tue, 28 Jun 2022 at 06:26, Richard Henderson <richard.hender...@linaro.org> wrote: > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > linux-user/aarch64/cpu_loop.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/linux-user/aarch64/cpu_loop.c b/linux-user/aarch64/cpu_loop.c > index 3b273f6299..4af6996d57 100644 > --- a/linux-user/aarch64/cpu_loop.c > +++ b/linux-user/aarch64/cpu_loop.c > @@ -89,6 +89,15 @@ void cpu_loop(CPUARMState *env) > > switch (trapnr) { > case EXCP_SWI: > + /* > + * On syscall, PSTATE.ZA is preserved, along with the ZA matrix. > + * PSTATE.SM is cleared, per SMSTOP, which does ResetSVEState. > + */ > + if (FIELD_EX64(env->svcr, SVCR, SM)) { > + env->svcr = FIELD_DP64(env->svcr, SVCR, SM, 0); > + arm_rebuild_hflags(env); > + arm_reset_sve_state(env); > + } > ret = do_syscall(env, > env->xregs[8], > env->xregs[0], > --
Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> thanks -- PMM