diff options
Diffstat (limited to 'arch/blackfin/include/asm/context.S')
-rw-r--r-- | arch/blackfin/include/asm/context.S | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/arch/blackfin/include/asm/context.S b/arch/blackfin/include/asm/context.S index 5dffaf582a22..1f9060395a0a 100644 --- a/arch/blackfin/include/asm/context.S +++ b/arch/blackfin/include/asm/context.S | |||
@@ -73,6 +73,11 @@ | |||
73 | #else | 73 | #else |
74 | cli r0; | 74 | cli r0; |
75 | #endif | 75 | #endif |
76 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
77 | sp += -12; | ||
78 | call _trace_hardirqs_off; | ||
79 | sp += 12; | ||
80 | #endif | ||
76 | [--sp] = RETI; /*orig_pc*/ | 81 | [--sp] = RETI; /*orig_pc*/ |
77 | /* Clear all L registers. */ | 82 | /* Clear all L registers. */ |
78 | r0 = 0 (x); | 83 | r0 = 0 (x); |
@@ -279,6 +284,13 @@ | |||
279 | RETN = [sp++]; | 284 | RETN = [sp++]; |
280 | RETX = [sp++]; | 285 | RETX = [sp++]; |
281 | RETI = [sp++]; | 286 | RETI = [sp++]; |
287 | |||
288 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
289 | sp += -12; | ||
290 | call _trace_hardirqs_on; | ||
291 | sp += 12; | ||
292 | #endif | ||
293 | |||
282 | RETS = [sp++]; | 294 | RETS = [sp++]; |
283 | 295 | ||
284 | #ifdef CONFIG_SMP | 296 | #ifdef CONFIG_SMP |
@@ -374,3 +386,13 @@ | |||
374 | 386 | ||
375 | (R7:0, P5:0) = [SP++]; | 387 | (R7:0, P5:0) = [SP++]; |
376 | .endm | 388 | .endm |
389 | |||
390 | .macro pseudo_long_call func:req, scratch:req | ||
391 | #ifdef CONFIG_ROMKERNEL | ||
392 | \scratch\().l = \func; | ||
393 | \scratch\().h = \func; | ||
394 | call (\scratch); | ||
395 | #else | ||
396 | call \func; | ||
397 | #endif | ||
398 | .endm | ||