aboutsummaryrefslogtreecommitdiff
path: root/arch/sh/kernel/unwinder.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2009-08-22 05:28:25 +0900
committerPaul Mundt <lethal@linux-sh.org>2009-08-22 05:28:25 +0900
commite115f2c17cbceee93b34d787a7a4a867fc73e7b4 (patch)
tree6ee0f20dcb5eca29793d68e97242c5e483c24cfc /arch/sh/kernel/unwinder.c
parentc153a58e715e16ffcd6c4b3da7fc6b4a556bf917 (diff)
sh: unwinder: Use a special bug flag for unwinder traps.
This simplifies the unwinder trap handling, dropping the use of the special trapa vector and simply piggybacking on top of the BUG support. A new BUGFLAG_UNWINDER is added for flagging the unwinder fault, before continuing on with regular BUG dispatch. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/unwinder.c')
-rw-r--r--arch/sh/kernel/unwinder.c21
1 files changed, 0 insertions, 21 deletions
diff --git a/arch/sh/kernel/unwinder.c b/arch/sh/kernel/unwinder.c
index e83861d9739..468889d958f 100644
--- a/arch/sh/kernel/unwinder.c
+++ b/arch/sh/kernel/unwinder.c
@@ -161,25 +161,4 @@ void unwind_stack(struct task_struct *task, struct pt_regs *regs,
curr_unwinder->dump(task, regs, sp, ops, data);
}
-
-/*
- * Trap handler for UWINDER_BUG() statements. We must switch to the
- * unwinder with the next highest rating.
- */
-BUILD_TRAP_HANDLER(unwinder)
-{
- insn_size_t insn;
- TRAP_HANDLER_DECL;
-
- /* Rewind */
- regs->pc -= instruction_size(ctrl_inw(regs->pc - 4));
- insn = *(insn_size_t *)instruction_pointer(regs);
-
- /* Switch unwinders when unwind_stack() is called */
- unwinder_faulted = 1;
-
-#ifdef CONFIG_BUG
- handle_BUG(regs);
-#endif
-}
EXPORT_SYMBOL_GPL(unwind_stack);