diff options
-rw-r--r-- | arch/arm/kernel/entry-armv.S | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index c46bafa2f6dc..920dd3d07957 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 ) |
305 | ENDPROC(__und_svc) | 315 | ENDPROC(__und_svc) |