vfp_save_state(&thread->vfpstate, fpexc | FPEXC_EN);
fmxr(FPEXC, fpexc);
}
-@@ -604,6 +611,7 @@ int vfp_restore_user_hwstate(struct user
+@@ -602,6 +609,7 @@ int vfp_restore_user_hwstate(struct user
+ struct thread_info *thread = current_thread_info();
struct vfp_hard_struct *hwstate = &thread->vfpstate.hard;
unsigned long fpexc;
- int err = 0;
+ u32 fpsid = fmrx(FPSID);
/* Disable VFP to avoid corrupting the new thread state. */
vfp_flush_hwstate(thread);
-@@ -627,8 +635,12 @@ int vfp_restore_user_hwstate(struct user
+@@ -624,8 +632,12 @@ int vfp_restore_user_hwstate(struct user
/* Ensure the VFP is enabled. */
fpexc |= FPEXC_EN;
+
hwstate->fpexc = fpexc;
- __get_user_error(hwstate->fpinst, &ufp_exc->fpinst, err);
-@@ -698,7 +710,8 @@ void kernel_neon_begin(void)
+ hwstate->fpinst = ufp_exc->fpinst;
+@@ -695,7 +707,8 @@ void kernel_neon_begin(void)
cpu = get_cpu();
fpexc = fmrx(FPEXC) | FPEXC_EN;