projects
/
qemu.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
9e59899
)
linux-user/s390x: Save/restore fpc when handling a signal
author
Ilya Leoshkevich
<iii@linux.ibm.com>
Wed, 17 Aug 2022 12:39:02 +0000
(14:39 +0200)
committer
Laurent Vivier
<laurent@vivier.eu>
Tue, 27 Sep 2022 11:19:05 +0000
(13:19 +0200)
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>
Message-Id: <
20220817123902
.585623-1-iii@linux.ibm.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
linux-user/s390x/signal.c
patch
|
blob
|
history
diff --git
a/linux-user/s390x/signal.c
b/linux-user/s390x/signal.c
index 4979c4b01791b98df7e856e8cc6973f4e3763146..f72165576f3bf2d67a232216cc980405d04c21ff 100644
(file)
--- 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]);
}