aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/blackfin/include/asm/context.S12
-rw-r--r--arch/blackfin/mach-common/entry.S15
-rw-r--r--arch/blackfin/mach-common/interrupt.S7
3 files changed, 34 insertions, 0 deletions
diff --git a/arch/blackfin/include/asm/context.S b/arch/blackfin/include/asm/context.S
index fada8e974a7..1f9060395a0 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
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S
index ccfa7c490ff..1fa414f7852 100644
--- a/arch/blackfin/mach-common/entry.S
+++ b/arch/blackfin/mach-common/entry.S
@@ -966,6 +966,13 @@ ENTRY(_evt_evt14)
966#else 966#else
967 cli r0; 967 cli r0;
968#endif 968#endif
969#ifdef CONFIG_TRACE_IRQFLAGS
970 [--sp] = rets;
971 sp += -12;
972 call _trace_hardirqs_off;
973 sp += 12;
974 rets = [sp++];
975#endif
969 [--sp] = RETI; 976 [--sp] = RETI;
970 SP += 4; 977 SP += 4;
971 rts; 978 rts;
@@ -989,6 +996,14 @@ ENTRY(_schedule_and_signal_from_int)
989 p1 = rets; 996 p1 = rets;
990 [sp + PT_RESERVED] = p1; 997 [sp + PT_RESERVED] = p1;
991 998
999#ifdef CONFIG_TRACE_IRQFLAGS
1000 /* trace_hardirqs_on() checks if all irqs are disabled. But here IRQ 15
1001 * is turned on, so disable all irqs. */
1002 cli r0;
1003 sp += -12;
1004 call _trace_hardirqs_on;
1005 sp += 12;
1006#endif
992#ifdef CONFIG_SMP 1007#ifdef CONFIG_SMP
993 GET_PDA(p0, r0); /* Fetch current PDA (can't migrate to other CPU here) */ 1008 GET_PDA(p0, r0); /* Fetch current PDA (can't migrate to other CPU here) */
994 r0 = [p0 + PDA_IRQFLAGS]; 1009 r0 = [p0 + PDA_IRQFLAGS];
diff --git a/arch/blackfin/mach-common/interrupt.S b/arch/blackfin/mach-common/interrupt.S
index df984960cf9..0a0c088ead8 100644
--- a/arch/blackfin/mach-common/interrupt.S
+++ b/arch/blackfin/mach-common/interrupt.S
@@ -88,6 +88,13 @@ __common_int_entry:
88#else 88#else
89 cli r1; 89 cli r1;
90#endif 90#endif
91#ifdef CONFIG_TRACE_IRQFLAGS
92 [--sp] = r0;
93 sp += -12;
94 call _trace_hardirqs_off;
95 sp += 12;
96 r0 = [sp++];
97#endif
91 [--sp] = RETI; /* orig_pc */ 98 [--sp] = RETI; /* orig_pc */
92 /* Clear all L registers. */ 99 /* Clear all L registers. */
93 r1 = 0 (x); 100 r1 = 0 (x);