diff options
author | Paul Mundt <lethal@linux-sh.org> | 2006-12-04 04:17:28 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2006-12-05 20:45:40 -0500 |
commit | afbfb52e47273a440df33274452c603e8c332de2 (patch) | |
tree | 041dc70061a67e787b362959298e093830b4b4d7 /arch/sh/kernel/cpu/sh2 | |
parent | c03c69610bfa728805deceeb624ee4268c722a5a (diff) |
sh: stacktrace/lockdep/irqflags tracing support.
Wire up all of the essentials for lockdep..
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/cpu/sh2')
-rw-r--r-- | arch/sh/kernel/cpu/sh2/entry.S | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/sh/kernel/cpu/sh2/entry.S b/arch/sh/kernel/cpu/sh2/entry.S index 298d9191909d..34d51b3745ea 100644 --- a/arch/sh/kernel/cpu/sh2/entry.S +++ b/arch/sh/kernel/cpu/sh2/entry.S | |||
@@ -184,6 +184,11 @@ trap_entry: | |||
184 | add r15,r8 | 184 | add r15,r8 |
185 | mov.l r9,@r8 | 185 | mov.l r9,@r8 |
186 | mov r9,r8 | 186 | mov r9,r8 |
187 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
188 | mov.l 5f, r9 | ||
189 | jsr @r9 | ||
190 | nop | ||
191 | #endif | ||
187 | sti | 192 | sti |
188 | bra system_call | 193 | bra system_call |
189 | nop | 194 | nop |
@@ -193,6 +198,9 @@ trap_entry: | |||
193 | 2: .long break_point_trap_software | 198 | 2: .long break_point_trap_software |
194 | 3: .long NR_syscalls | 199 | 3: .long NR_syscalls |
195 | 4: .long sys_call_table | 200 | 4: .long sys_call_table |
201 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
202 | 5: .long trace_hardirqs_on | ||
203 | #endif | ||
196 | 204 | ||
197 | #if defined(CONFIG_SH_STANDARD_BIOS) | 205 | #if defined(CONFIG_SH_STANDARD_BIOS) |
198 | /* Unwind the stack and jmp to the debug entry */ | 206 | /* Unwind the stack and jmp to the debug entry */ |
@@ -255,6 +263,11 @@ ENTRY(address_error_handler) | |||
255 | 263 | ||
256 | restore_all: | 264 | restore_all: |
257 | cli | 265 | cli |
266 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
267 | mov.l 3f, r0 | ||
268 | jsr @r0 | ||
269 | nop | ||
270 | #endif | ||
258 | mov r15,r0 | 271 | mov r15,r0 |
259 | mov.l $cpu_mode,r2 | 272 | mov.l $cpu_mode,r2 |
260 | mov #OFF_SR,r3 | 273 | mov #OFF_SR,r3 |
@@ -307,6 +320,9 @@ $current_thread_info: | |||
307 | .long __current_thread_info | 320 | .long __current_thread_info |
308 | $cpu_mode: | 321 | $cpu_mode: |
309 | .long __cpu_mode | 322 | .long __cpu_mode |
323 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
324 | 3: .long trace_hardirqs_off | ||
325 | #endif | ||
310 | 326 | ||
311 | ! common exception handler | 327 | ! common exception handler |
312 | #include "../../entry-common.S" | 328 | #include "../../entry-common.S" |