aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2009-08-13 14:38:17 -0400
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>2009-08-13 14:34:37 -0400
commit0d928b0b616d1c5c5fe76019a87cba171ca91633 (patch)
treedb71283925be4df3ea3cf66f9a3eab5f4f349a06 /arch/arm/kernel
parent181f817eaaca4c1f8a9c265d339d2b96de8b245d (diff)
Complete irq tracing support for ARM
Before this patch enabling and disabling irqs in assembler code and by the hardware wasn't tracked completly. I had to transpose two instructions in arch/arm/lib/bitops.h because restore_irqs doesn't preserve the flags with CONFIG_TRACE_IRQFLAGS=y Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Cc: Russell King <linux@arm.linux.org.uk> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ingo Molnar <mingo@redhat.com> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r--arch/arm/kernel/entry-armv.S10
1 files changed, 4 insertions, 6 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index fc8af43c5000..792abd0dfae1 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -151,6 +151,8 @@ ENDPROC(__und_invalid)
151 @ r4 - orig_r0 (see pt_regs definition in ptrace.h) 151 @ r4 - orig_r0 (see pt_regs definition in ptrace.h)
152 @ 152 @
153 stmia r5, {r0 - r4} 153 stmia r5, {r0 - r4}
154
155 asm_trace_hardirqs_off
154 .endm 156 .endm
155 157
156 .align 5 158 .align 5
@@ -206,9 +208,6 @@ ENDPROC(__dabt_svc)
206__irq_svc: 208__irq_svc:
207 svc_entry 209 svc_entry
208 210
209#ifdef CONFIG_TRACE_IRQFLAGS
210 bl trace_hardirqs_off
211#endif
212#ifdef CONFIG_PREEMPT 211#ifdef CONFIG_PREEMPT
213 get_thread_info tsk 212 get_thread_info tsk
214 ldr r8, [tsk, #TI_PREEMPT] @ get preempt count 213 ldr r8, [tsk, #TI_PREEMPT] @ get preempt count
@@ -383,6 +382,8 @@ ENDPROC(__pabt_svc)
383 @ Clear FP to mark the first stack frame 382 @ Clear FP to mark the first stack frame
384 @ 383 @
385 zero_fp 384 zero_fp
385
386 asm_trace_hardirqs_off
386 .endm 387 .endm
387 388
388 .macro kuser_cmpxchg_check 389 .macro kuser_cmpxchg_check
@@ -437,9 +438,6 @@ __irq_usr:
437 usr_entry 438 usr_entry
438 kuser_cmpxchg_check 439 kuser_cmpxchg_check
439 440
440#ifdef CONFIG_TRACE_IRQFLAGS
441 bl trace_hardirqs_off
442#endif
443 get_thread_info tsk 441 get_thread_info tsk
444#ifdef CONFIG_PREEMPT 442#ifdef CONFIG_PREEMPT
445 ldr r8, [tsk, #TI_PREEMPT] @ get preempt count 443 ldr r8, [tsk, #TI_PREEMPT] @ get preempt count