aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/vfp/entry.S
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-04-03 09:05:40 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2009-04-03 09:05:40 -0700
commit31e6e2dac575c9d21a6ec56ca52ae89086baa705 (patch)
treea83dc42a3e4ff2e49e532031ec3e86c402e4baa1 /arch/arm/vfp/entry.S
parentea02259fdf47ca81ff3ca0c22906d989094fb8ff (diff)
parent67a52bb90b515c2a96ec51a3571bcd70a2fadb50 (diff)
Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm: [ARM] fix build-breaking 7a192ec commit ARM: Add SMSC911X support to Overo platform (V2) arm: update omap_ldp defconfig to use smsc911x arm: update realview defconfigs to use smsc911x arm: update pcm037 defconfig to use smsc911x arm: convert omap ldp platform to use smsc911x arm: convert realview platform to use smsc911x arm: convert pcm037 platform to use smsc911x [ARM] 5444/1: ARM: Realview: Fix event-device multiplicators in localtimer.c [ARM] 5442/1: pxa/cm-x255: fix reverse RDY gpios in PCMCIA driver [ARM] 5441/1: Use pr_err on error paths in at91 pm [ARM] 5440/1: Fix VFP state corruption due to preemption during VFP exceptions [ARM] 5439/1: Do not clear bit 10 of DFSR during abort handling on ARMv6 [ARM] 5437/1: Add documentation for "nohlt" kernel parameter [ARM] 5436/1: ARM: OMAP: Fix compile for rx51 [ARM] arch_reset() now takes a second parameter [ARM] Kirkwood: small L2 code cleanup [ARM] Kirkwood: invalidate L2 cache before enabling it
Diffstat (limited to 'arch/arm/vfp/entry.S')
-rw-r--r--arch/arm/vfp/entry.S23
1 files changed, 19 insertions, 4 deletions
diff --git a/arch/arm/vfp/entry.S b/arch/arm/vfp/entry.S
index ba592a9e6fb..a2bed62aec2 100644
--- a/arch/arm/vfp/entry.S
+++ b/arch/arm/vfp/entry.S
@@ -15,13 +15,16 @@
* r10 = thread_info structure
* lr = failure return
*/
-#include <linux/linkage.h>
-#include <linux/init.h>
-#include <asm/asm-offsets.h>
-#include <asm/assembler.h>
+#include <asm/thread_info.h>
#include <asm/vfpmacros.h>
+#include "../kernel/entry-header.S"
ENTRY(do_vfp)
+#ifdef CONFIG_PREEMPT
+ ldr r4, [r10, #TI_PREEMPT] @ get preempt count
+ add r11, r4, #1 @ increment it
+ str r11, [r10, #TI_PREEMPT]
+#endif
enable_irq
ldr r4, .LCvfp
ldr r11, [r10, #TI_CPU] @ CPU number
@@ -30,6 +33,12 @@ ENTRY(do_vfp)
ENDPROC(do_vfp)
ENTRY(vfp_null_entry)
+#ifdef CONFIG_PREEMPT
+ get_thread_info r10
+ ldr r4, [r10, #TI_PREEMPT] @ get preempt count
+ sub r11, r4, #1 @ decrement it
+ str r11, [r10, #TI_PREEMPT]
+#endif
mov pc, lr
ENDPROC(vfp_null_entry)
@@ -41,6 +50,12 @@ ENDPROC(vfp_null_entry)
__INIT
ENTRY(vfp_testing_entry)
+#ifdef CONFIG_PREEMPT
+ get_thread_info r10
+ ldr r4, [r10, #TI_PREEMPT] @ get preempt count
+ sub r11, r4, #1 @ decrement it
+ str r11, [r10, #TI_PREEMPT]
+#endif
ldr r0, VFP_arch_address
str r5, [r0] @ known non-zero value
mov pc, r9 @ we have handled the fault