diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2009-08-13 14:38:17 -0400 |
---|---|---|
committer | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2009-08-13 14:34:37 -0400 |
commit | 0d928b0b616d1c5c5fe76019a87cba171ca91633 (patch) | |
tree | db71283925be4df3ea3cf66f9a3eab5f4f349a06 /arch/arm/kernel | |
parent | 181f817eaaca4c1f8a9c265d339d2b96de8b245d (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.S | 10 |
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 |