aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/vfp/vfphw.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/vfp/vfphw.S')
-rw-r--r--arch/arm/vfp/vfphw.S19
1 files changed, 11 insertions, 8 deletions
diff --git a/arch/arm/vfp/vfphw.S b/arch/arm/vfp/vfphw.S
index 2d30c7f6edd3..3a0efaad6090 100644
--- a/arch/arm/vfp/vfphw.S
+++ b/arch/arm/vfp/vfphw.S
@@ -61,13 +61,13 @@
61 61
62@ VFP hardware support entry point. 62@ VFP hardware support entry point.
63@ 63@
64@ r0 = faulted instruction 64@ r0 = instruction opcode (32-bit ARM or two 16-bit Thumb)
65@ r2 = faulted PC+4 65@ r2 = PC value to resume execution after successful emulation
66@ r9 = successful return 66@ r9 = normal "successful" return address
67@ r10 = vfp_state union 67@ r10 = vfp_state union
68@ r11 = CPU number 68@ r11 = CPU number
69@ lr = failure return 69@ lr = unrecognised instruction return address
70 70@ IRQs enabled.
71ENTRY(vfp_support_entry) 71ENTRY(vfp_support_entry)
72 DBGSTR3 "instr %08x pc %08x state %p", r0, r2, r10 72 DBGSTR3 "instr %08x pc %08x state %p", r0, r2, r10
73 73
@@ -161,9 +161,12 @@ vfp_hw_state_valid:
161 @ exception before retrying branch 161 @ exception before retrying branch
162 @ out before setting an FPEXC that 162 @ out before setting an FPEXC that
163 @ stops us reading stuff 163 @ stops us reading stuff
164 VFPFMXR FPEXC, r1 @ restore FPEXC last 164 VFPFMXR FPEXC, r1 @ Restore FPEXC last
165 sub r2, r2, #4 165 sub r2, r2, #4 @ Retry current instruction - if Thumb
166 str r2, [sp, #S_PC] @ retry the instruction 166 str r2, [sp, #S_PC] @ mode it's two 16-bit instructions,
167 @ else it's one 32-bit instruction, so
168 @ always subtract 4 from the following
169 @ instruction address.
167#ifdef CONFIG_PREEMPT 170#ifdef CONFIG_PREEMPT
168 get_thread_info r10 171 get_thread_info r10
169 ldr r4, [r10, #TI_PREEMPT] @ get preempt count 172 ldr r4, [r10, #TI_PREEMPT] @ get preempt count