From: Paul Mundt Date: Mon, 11 Dec 2006 11:29:28 +0000 (+0900) Subject: sh: Fixup sh_bios() trap handling. X-Git-Tag: v2.6.20-rc1~146^2~4^2~5 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1dc417d0390b4897dc1d9bbf335e325baecae2c3;p=linux-2.6 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: Paul Mundt --- diff --git a/arch/sh/kernel/entry-common.S b/arch/sh/kernel/entry-common.S index 29136a35d7..fc279aeb73 100644 --- a/arch/sh/kernel/entry-common.S +++ b/arch/sh/kernel/entry-common.S @@ -79,18 +79,29 @@ debug_kernel_sw: .align 2 3: .long kgdb_handle_exception #endif /* CONFIG_SH_KGDB */ - +#ifdef CONFIG_SH_STANDARD_BIOS + bra debug_kernel_fw + nop +#endif #endif /* CONFIG_SH_STANDARD_BIOS || CONFIG_SH_KGDB */ - .align 2 debug_trap: #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.l @(r0,r15), r0 ! get status register shll r0 shll r0 ! kernel space? bt/s debug_kernel +1: #endif mov.l @r15, r0 ! Restore R0 value mov.l 1f, r8