From: Randy Dunlap <rdunlap@xenotime.net>

Print summary registers (EIP and SS:ESP only) as last death info.
Similar to what x86_64 does.  Suggested by Andi Kleen.

Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
---
 arch/i386/kernel/traps.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletion(-)

--- linux-2616-rc5-die.orig/arch/i386/kernel/traps.c
+++ linux-2616-rc5-die/arch/i386/kernel/traps.c
@@ -345,6 +345,9 @@ void die(const char * str, struct pt_reg
 
 	if (++die.lock_owner_depth < 3) {
 		int nl = 0;
+		unsigned long esp;
+		unsigned short ss;
+
 		handle_BUG(regs);
 		printk(KERN_EMERG "%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter);
 #ifdef CONFIG_PREEMPT
@@ -365,8 +368,17 @@ void die(const char * str, struct pt_reg
 #endif
 		if (nl)
 			printk("\n");
-	notify_die(DIE_OOPS, (char *)str, regs, err, 255, SIGSEGV);
+		notify_die(DIE_OOPS, (char *)str, regs, err, 255, SIGSEGV);
 		show_registers(regs);
+		/* Executive summary in case the oops scrolled away */
+		esp = (unsigned long) (&regs->esp);
+		if (user_mode(regs)) {
+			esp = regs->esp;
+			ss = regs->xss & 0xffff;
+		}
+		printk(KERN_ALERT "EIP: ");
+		printk_address(regs->eip);
+		printk(" SS:ESP %04x:%08lx\n", esp);
   	} else
 		printk(KERN_EMERG "Recursive die() failure, output suppressed\n");
 
