diff options
author | Colin Cross <ccross@android.com> | 2011-09-16 18:41:06 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2011-09-16 18:50:07 -0700 |
commit | 5b82de08fff8b06d3facdacf38255f20f7769382 (patch) | |
tree | b8afc8efadf1c20e5b54e901b252df7146710934 /arch/arm/vfp | |
parent | 1545c2379be386ff7df776a7c24dfb0af40a7aa2 (diff) | |
download | kernel_samsung_tuna-5b82de08fff8b06d3facdacf38255f20f7769382.zip kernel_samsung_tuna-5b82de08fff8b06d3facdacf38255f20f7769382.tar.gz kernel_samsung_tuna-5b82de08fff8b06d3facdacf38255f20f7769382.tar.bz2 |
Revert "ARM: vfp: ensure that thread flushing works if preempted"
This reverts commit 4f77fd436e53acf5bc0a06a24331f64b07fb33ec.
Diffstat (limited to 'arch/arm/vfp')
-rw-r--r-- | arch/arm/vfp/vfpmodule.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c index 50dbe35..445a996 100644 --- a/arch/arm/vfp/vfpmodule.c +++ b/arch/arm/vfp/vfpmodule.c @@ -89,27 +89,24 @@ static void vfp_thread_flush(struct thread_info *thread) union vfp_state *vfp = &thread->vfpstate; unsigned int cpu; + memset(vfp, 0, sizeof(union vfp_state)); + + vfp->hard.fpexc = FPEXC_EN; + vfp->hard.fpscr = FPSCR_ROUND_NEAREST; +#ifdef CONFIG_SMP + vfp->hard.cpu = NR_CPUS; +#endif + /* * Disable VFP to ensure we initialize it first. We must ensure - * that the modification of vfp_current_hw_state[] and hardware - * disable are done for the same CPU and without preemption. - * - * Do this first to ensure that preemption won't overwrite our - * state saving should access to the VFP be enabled at this point. + * that the modification of vfp_current_hw_state[] and hardware disable + * are done for the same CPU and without preemption. */ cpu = get_cpu(); if (vfp_current_hw_state[cpu] == vfp) vfp_current_hw_state[cpu] = NULL; fmxr(FPEXC, fmrx(FPEXC) & ~FPEXC_EN); put_cpu(); - - memset(vfp, 0, sizeof(union vfp_state)); - - vfp->hard.fpexc = FPEXC_EN; - vfp->hard.fpscr = FPSCR_ROUND_NEAREST; -#ifdef CONFIG_SMP - vfp->hard.cpu = NR_CPUS; -#endif } static void vfp_thread_exit(struct thread_info *thread) |