Message ID | 20220817123902.585623-1-iii@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | linux-user/s390x: Save/restore fpc when handling a signal | expand |
On 8/17/22 07:39, Ilya Leoshkevich wrote: > Linux kernel does this in fpregs_store() and fpregs_load(), so > qemu-user should do this as well. > > Found by running valgrind's none/tests/s390x/test_sig. > > Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
Le 17/08/2022 à 14:39, Ilya Leoshkevich a écrit : > Linux kernel does this in fpregs_store() and fpregs_load(), so > qemu-user should do this as well. > > Found by running valgrind's none/tests/s390x/test_sig. > > Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> > --- > linux-user/s390x/signal.c | 2 ++ > 1 file changed, 2 insertions(+) Applied to my linux-user-for-7.2 branch. Thanks, Laurent
diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index 4979c4b017..f72165576f 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -146,6 +146,7 @@ static void save_sigregs(CPUS390XState *env, target_sigregs *sregs) * We have to store the fp registers to current->thread.fp_regs * to merge them with the emulated registers. */ + __put_user(env->fpc, &sregs->fpregs.fpc); for (i = 0; i < 16; i++) { __put_user(*get_freg(env, i), &sregs->fpregs.fprs[i]); } @@ -331,6 +332,7 @@ static void restore_sigregs(CPUS390XState *env, target_sigregs *sc) for (i = 0; i < 16; i++) { __get_user(env->aregs[i], &sc->regs.acrs[i]); } + __get_user(env->fpc, &sc->fpregs.fpc); for (i = 0; i < 16; i++) { __get_user(*get_freg(env, i), &sc->fpregs.fprs[i]); }
Linux kernel does this in fpregs_store() and fpregs_load(), so qemu-user should do this as well. Found by running valgrind's none/tests/s390x/test_sig. Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> --- linux-user/s390x/signal.c | 2 ++ 1 file changed, 2 insertions(+)