aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2007-05-15 08:36:36 +0900
committerPaul Mundt <lethal@linux-sh.org>2007-05-21 14:34:37 +0900
commite113276624104d9c3b25f333d8dd999b804d980a (patch)
tree1b8945f42557679e81e1fbd382183e5914354bb4 /arch/sh
parentf3a9022fd187de41a04de9c5b44ff40e68c6d661 (diff)
downloadkernel_samsung_espresso10-e113276624104d9c3b25f333d8dd999b804d980a.zip
kernel_samsung_espresso10-e113276624104d9c3b25f333d8dd999b804d980a.tar.gz
kernel_samsung_espresso10-e113276624104d9c3b25f333d8dd999b804d980a.tar.bz2
sh: Wire up kdump crash kernel exec in die().
Now that we have the basic kdump support in place, add it in to die() so we can enter the crash kernel automatically. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh')
-rw-r--r--arch/sh/kernel/traps.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c
index a01e367..5b75cb6 100644
--- a/arch/sh/kernel/traps.c
+++ b/arch/sh/kernel/traps.c
@@ -21,6 +21,7 @@
#include <linux/bug.h>
#include <linux/debug_locks.h>
#include <linux/kdebug.h>
+#include <linux/kexec.h>
#include <linux/limits.h>
#include <asm/system.h>
#include <asm/uaccess.h>
@@ -101,6 +102,16 @@ void die(const char * str, struct pt_regs * regs, long err)
bust_spinlocks(0);
spin_unlock_irq(&die_lock);
+
+ if (kexec_should_crash(current))
+ crash_kexec(regs);
+
+ if (in_interrupt())
+ panic("Fatal exception in interrupt");
+
+ if (panic_on_oops)
+ panic("Fatal exception");
+
do_exit(SIGSEGV);
}