|
@@ -965,6 +965,13 @@ ENTRY(_evt_evt14)
|
|
|
sti r0;
|
|
|
#else
|
|
|
cli r0;
|
|
|
+#endif
|
|
|
+#ifdef CONFIG_TRACE_IRQFLAGS
|
|
|
+ [--sp] = rets;
|
|
|
+ sp += -12;
|
|
|
+ call _trace_hardirqs_off;
|
|
|
+ sp += 12;
|
|
|
+ rets = [sp++];
|
|
|
#endif
|
|
|
[--sp] = RETI;
|
|
|
SP += 4;
|
|
@@ -989,6 +996,14 @@ ENTRY(_schedule_and_signal_from_int)
|
|
|
p1 = rets;
|
|
|
[sp + PT_RESERVED] = p1;
|
|
|
|
|
|
+#ifdef CONFIG_TRACE_IRQFLAGS
|
|
|
+ /* trace_hardirqs_on() checks if all irqs are disabled. But here IRQ 15
|
|
|
+ * is turned on, so disable all irqs. */
|
|
|
+ cli r0;
|
|
|
+ sp += -12;
|
|
|
+ call _trace_hardirqs_on;
|
|
|
+ sp += 12;
|
|
|
+#endif
|
|
|
#ifdef CONFIG_SMP
|
|
|
GET_PDA(p0, r0); /* Fetch current PDA (can't migrate to other CPU here) */
|
|
|
r0 = [p0 + PDA_IRQFLAGS];
|