Commit 1dc417d0 authored by Paul Mundt's avatar Paul Mundt

sh: Fixup sh_bios() trap handling.

This was inadvertently broken when the entry.S code split up,
restore the missing branch and get subsequent traps working
under debug again. This manifested itself as a lockup when
attempting to reload the VBR base.
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 41504c39
...@@ -79,18 +79,29 @@ debug_kernel_sw: ...@@ -79,18 +79,29 @@ debug_kernel_sw:
.align 2 .align 2
3: .long kgdb_handle_exception 3: .long kgdb_handle_exception
#endif /* CONFIG_SH_KGDB */ #endif /* CONFIG_SH_KGDB */
#ifdef CONFIG_SH_STANDARD_BIOS
bra debug_kernel_fw
nop
#endif
#endif /* CONFIG_SH_STANDARD_BIOS || CONFIG_SH_KGDB */ #endif /* CONFIG_SH_STANDARD_BIOS || CONFIG_SH_KGDB */
.align 2 .align 2
debug_trap: debug_trap:
#if defined(CONFIG_SH_STANDARD_BIOS) || defined(CONFIG_SH_KGDB) #if defined(CONFIG_SH_STANDARD_BIOS) || defined(CONFIG_SH_KGDB)
mov r8, r0
shlr2 r0
cmp/eq #0x3f, r0 ! sh_bios() trap
bf 1f
#ifdef CONFIG_SH_KGDB
cmp/eq #0xff, r0 ! XXX: KGDB trap, fix for SH-2.
bf 1f
#endif
mov #OFF_SR, r0 mov #OFF_SR, r0
mov.l @(r0,r15), r0 ! get status register mov.l @(r0,r15), r0 ! get status register
shll r0 shll r0
shll r0 ! kernel space? shll r0 ! kernel space?
bt/s debug_kernel bt/s debug_kernel
1:
#endif #endif
mov.l @r15, r0 ! Restore R0 value mov.l @r15, r0 ! Restore R0 value
mov.l 1f, r8 mov.l 1f, r8
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment