diff options
author | Yi Li <yi.li@analog.com> | 2010-01-18 23:35:28 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2010-03-09 00:30:49 -0500 |
commit | 441504df6b81302c06010083c8d63b1465ead405 (patch) | |
tree | ccf92436418cb23f5d5d7d55a9af027885f4e022 /arch/blackfin/mach-common | |
parent | 5aff1642aee0fe3cb9be7339fcc09dd2bd1976f0 (diff) |
Blackfin: add support for irqflags tracing
Signed-off-by: Yi Li <yi.li@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch/blackfin/mach-common')
-rw-r--r-- | arch/blackfin/mach-common/entry.S | 15 | ||||
-rw-r--r-- | arch/blackfin/mach-common/interrupt.S | 7 |
2 files changed, 22 insertions, 0 deletions
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S index ccfa7c490ff9..1fa414f7852f 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 df984960cf90..0a0c088ead8c 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); |