aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/entry-armv.S
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2011-06-25 11:55:58 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2011-07-02 05:56:10 -0400
commitdf295df6c391e322a06dea0d2bc3d22debd15fb9 (patch)
tree37436463cb6cc22a3b0ff4a1c96c66920ef5f53c /arch/arm/kernel/entry-armv.S
parent02fe2845d6a837ab02f0738f6cf4591a02cc88d4 (diff)
ARM: entry: instrument svc undefined exception handler with irqtrace
Add irqtrace function calls to the undefined exception handler, so that we get sane lockdep traces from locking problems in undefined exception handlers. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel/entry-armv.S')
-rw-r--r--arch/arm/kernel/entry-armv.S10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index c46bafa2f6d..920dd3d0795 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -268,6 +268,10 @@ __und_svc:
268 svc_entry 268 svc_entry
269#endif 269#endif
270 270
271#ifdef CONFIG_TRACE_IRQFLAGS
272 bl trace_hardirqs_off
273#endif
274
271 @ 275 @
272 @ call emulation code, which returns using r9 if it has emulated 276 @ call emulation code, which returns using r9 if it has emulated
273 @ the instruction, or the more conventional lr if we are to treat 277 @ the instruction, or the more conventional lr if we are to treat
@@ -300,6 +304,12 @@ __und_svc:
300 @ restore SPSR and restart the instruction 304 @ restore SPSR and restart the instruction
301 @ 305 @
302 ldr r5, [sp, #S_PSR] @ Get SVC cpsr 306 ldr r5, [sp, #S_PSR] @ Get SVC cpsr
307#ifdef CONFIG_TRACE_IRQFLAGS
308 tst r5, #PSR_I_BIT
309 bleq trace_hardirqs_on
310 tst r5, #PSR_I_BIT
311 blne trace_hardirqs_off
312#endif
303 svc_exit r5 @ return from exception 313 svc_exit r5 @ return from exception
304 UNWIND(.fnend ) 314 UNWIND(.fnend )
305ENDPROC(__und_svc) 315ENDPROC(__und_svc)