diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/arm/vfp/vfphw.S | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/arch/arm/vfp/vfphw.S b/arch/arm/vfp/vfphw.S index c75443e204b2..404538ae591d 100644 --- a/arch/arm/vfp/vfphw.S +++ b/arch/arm/vfp/vfphw.S | |||
| @@ -81,11 +81,8 @@ ENTRY(vfp_support_entry) | |||
| 81 | orr r1, r1, #FPEXC_EN @ user FPEXC has the enable bit set | 81 | orr r1, r1, #FPEXC_EN @ user FPEXC has the enable bit set |
| 82 | ldr r4, [r3, r11, lsl #2] @ vfp_current_hw_state pointer | 82 | ldr r4, [r3, r11, lsl #2] @ vfp_current_hw_state pointer |
| 83 | bic r5, r1, #FPEXC_EX @ make sure exceptions are disabled | 83 | bic r5, r1, #FPEXC_EX @ make sure exceptions are disabled |
| 84 | cmp r4, r10 | 84 | cmp r4, r10 @ this thread owns the hw context? |
| 85 | beq check_for_exception @ we are returning to the same | 85 | beq vfp_hw_state_valid |
| 86 | @ process, so the registers are | ||
| 87 | @ still there. In this case, we do | ||
| 88 | @ not want to drop a pending exception. | ||
| 89 | 86 | ||
| 90 | VFPFMXR FPEXC, r5 @ enable VFP, disable any pending | 87 | VFPFMXR FPEXC, r5 @ enable VFP, disable any pending |
| 91 | @ exceptions, so we can get at the | 88 | @ exceptions, so we can get at the |
| @@ -132,7 +129,8 @@ no_old_VFP_process: | |||
| 132 | #endif | 129 | #endif |
| 133 | VFPFMXR FPSCR, r5 @ restore status | 130 | VFPFMXR FPSCR, r5 @ restore status |
| 134 | 131 | ||
| 135 | check_for_exception: | 132 | @ The context stored in the VFP hardware is up to date with this thread |
| 133 | vfp_hw_state_valid: | ||
| 136 | tst r1, #FPEXC_EX | 134 | tst r1, #FPEXC_EX |
| 137 | bne process_exception @ might as well handle the pending | 135 | bne process_exception @ might as well handle the pending |
| 138 | @ exception before retrying branch | 136 | @ exception before retrying branch |
