mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-30 13:38:40 +00:00
s390/fpu: signals vs. floating point control register
git commit 904818e2f2
"s390/kernel: introduce fpu-internal.h with fpu helper functions"
introduced the fpregs_store / fp_regs_load helper. These function
fail to save and restore the floating pointer control registers.
The effect is that the FPC is not correctly handled on signal
delivery and signal return.
Cc: stable@vger.kernel.org # 4.4
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
342300cc9c
commit
1b17cb796f
@ -40,6 +40,7 @@ static inline void convert_fp_to_vx(__vector128 *vxrs, freg_t *fprs)
|
|||||||
static inline void fpregs_store(_s390_fp_regs *fpregs, struct fpu *fpu)
|
static inline void fpregs_store(_s390_fp_regs *fpregs, struct fpu *fpu)
|
||||||
{
|
{
|
||||||
fpregs->pad = 0;
|
fpregs->pad = 0;
|
||||||
|
fpregs->fpc = fpu->fpc;
|
||||||
if (MACHINE_HAS_VX)
|
if (MACHINE_HAS_VX)
|
||||||
convert_vx_to_fp((freg_t *)&fpregs->fprs, fpu->vxrs);
|
convert_vx_to_fp((freg_t *)&fpregs->fprs, fpu->vxrs);
|
||||||
else
|
else
|
||||||
@ -49,6 +50,7 @@ static inline void fpregs_store(_s390_fp_regs *fpregs, struct fpu *fpu)
|
|||||||
|
|
||||||
static inline void fpregs_load(_s390_fp_regs *fpregs, struct fpu *fpu)
|
static inline void fpregs_load(_s390_fp_regs *fpregs, struct fpu *fpu)
|
||||||
{
|
{
|
||||||
|
fpu->fpc = fpregs->fpc;
|
||||||
if (MACHINE_HAS_VX)
|
if (MACHINE_HAS_VX)
|
||||||
convert_fp_to_vx(fpu->vxrs, (freg_t *)&fpregs->fprs);
|
convert_fp_to_vx(fpu->vxrs, (freg_t *)&fpregs->fprs);
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user