|
@@ -69,8 +69,9 @@ static int copy_fp_to_sigcontext(void __user *sc)
|
|
|
uint32_t __user *csr = sc + abi->off_sc_fpc_csr;
|
|
|
int i;
|
|
|
int err = 0;
|
|
|
+ int inc = test_thread_flag(TIF_32BIT_FPREGS) ? 2 : 1;
|
|
|
|
|
|
- for (i = 0; i < NUM_FPU_REGS; i++) {
|
|
|
+ for (i = 0; i < NUM_FPU_REGS; i += inc) {
|
|
|
err |=
|
|
|
__put_user(get_fpr64(¤t->thread.fpu.fpr[i], 0),
|
|
|
&fpregs[i]);
|
|
@@ -87,9 +88,10 @@ static int copy_fp_from_sigcontext(void __user *sc)
|
|
|
uint32_t __user *csr = sc + abi->off_sc_fpc_csr;
|
|
|
int i;
|
|
|
int err = 0;
|
|
|
+ int inc = test_thread_flag(TIF_32BIT_FPREGS) ? 2 : 1;
|
|
|
u64 fpr_val;
|
|
|
|
|
|
- for (i = 0; i < NUM_FPU_REGS; i++) {
|
|
|
+ for (i = 0; i < NUM_FPU_REGS; i += inc) {
|
|
|
err |= __get_user(fpr_val, &fpregs[i]);
|
|
|
set_fpr64(¤t->thread.fpu.fpr[i], 0, fpr_val);
|
|
|
}
|