diff options
author | Graf Yang <graf.yang@analog.com> | 2009-01-07 10:14:39 -0500 |
---|---|---|
committer | Bryan Wu <cooloney@kernel.org> | 2009-01-07 10:14:39 -0500 |
commit | f994607a2e118aedf1116a58ecd16126dbb83d28 (patch) | |
tree | 2b1764e2a037c904aa1358a54852eeb6e349cf6f /arch/blackfin/mach-common | |
parent | 6f985294f7df30c0caa80a795ca10fb6f8466702 (diff) |
Blackfin arch: get oprofile work for user space
Signed-off-by: Graf Yang <graf.yang@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
Diffstat (limited to 'arch/blackfin/mach-common')
-rw-r--r-- | arch/blackfin/mach-common/interrupt.S | 12 | ||||
-rw-r--r-- | arch/blackfin/mach-common/irqpanic.c | 4 |
2 files changed, 9 insertions, 7 deletions
diff --git a/arch/blackfin/mach-common/interrupt.S b/arch/blackfin/mach-common/interrupt.S index 4a2ec7a9675a..2604b532897c 100644 --- a/arch/blackfin/mach-common/interrupt.S +++ b/arch/blackfin/mach-common/interrupt.S | |||
@@ -152,6 +152,12 @@ ENTRY(_evt_ivhw) | |||
152 | 1: | 152 | 1: |
153 | #endif | 153 | #endif |
154 | 154 | ||
155 | # We are going to dump something out, so make sure we print IPEND properly | ||
156 | p2.l = lo(IPEND); | ||
157 | p2.h = hi(IPEND); | ||
158 | r0 = [p2]; | ||
159 | [sp + PT_IPEND] = r0; | ||
160 | |||
155 | #ifdef CONFIG_HARDWARE_PM | 161 | #ifdef CONFIG_HARDWARE_PM |
156 | r7 = [sp + PT_SEQSTAT]; | 162 | r7 = [sp + PT_SEQSTAT]; |
157 | r7 = r7 >>> 0xe; | 163 | r7 = r7 >>> 0xe; |
@@ -161,11 +167,6 @@ ENTRY(_evt_ivhw) | |||
161 | cc = r7 == r5; | 167 | cc = r7 == r5; |
162 | if cc jump .Lcall_do_ovf; /* deal with performance counter overflow */ | 168 | if cc jump .Lcall_do_ovf; /* deal with performance counter overflow */ |
163 | #endif | 169 | #endif |
164 | # We are going to dump something out, so make sure we print IPEND properly | ||
165 | p2.l = lo(IPEND); | ||
166 | p2.h = hi(IPEND); | ||
167 | r0 = [p2]; | ||
168 | [sp + PT_IPEND] = r0; | ||
169 | 170 | ||
170 | /* set the EXCAUSE to HWERR for trap_c */ | 171 | /* set the EXCAUSE to HWERR for trap_c */ |
171 | r0 = [sp + PT_SEQSTAT]; | 172 | r0 = [sp + PT_SEQSTAT]; |
@@ -196,6 +197,7 @@ ENTRY(_evt_ivhw) | |||
196 | #ifdef CONFIG_HARDWARE_PM | 197 | #ifdef CONFIG_HARDWARE_PM |
197 | .Lcall_do_ovf: | 198 | .Lcall_do_ovf: |
198 | 199 | ||
200 | R0 = SP; | ||
199 | SP += -12; | 201 | SP += -12; |
200 | call _pm_overflow; | 202 | call _pm_overflow; |
201 | SP += 12; | 203 | SP += 12; |
diff --git a/arch/blackfin/mach-common/irqpanic.c b/arch/blackfin/mach-common/irqpanic.c index 606ded9ff4e1..7b69413c1556 100644 --- a/arch/blackfin/mach-common/irqpanic.c +++ b/arch/blackfin/mach-common/irqpanic.c | |||
@@ -139,8 +139,8 @@ asmlinkage void irq_panic(int reason, struct pt_regs *regs) | |||
139 | /* | 139 | /* |
140 | * call the handler of Performance overflow | 140 | * call the handler of Performance overflow |
141 | */ | 141 | */ |
142 | asmlinkage void pm_overflow(int irq, struct pt_regs *regs) | 142 | asmlinkage void pm_overflow(struct pt_regs *regs) |
143 | { | 143 | { |
144 | pm_overflow_handler(irq, regs); | 144 | pm_overflow_handler(regs); |
145 | } | 145 | } |
146 | #endif | 146 | #endif |