patch-2.2.4 linux/arch/sparc64/kernel/traps.c

Next file: linux/arch/sparc64/kernel/unaligned.c
Previous file: linux/arch/sparc64/kernel/trampoline.S
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.2.3/linux/arch/sparc64/kernel/traps.c linux/arch/sparc64/kernel/traps.c
@@ -1,8 +1,8 @@
-/* $Id: traps.c,v 1.55 1998/10/11 06:58:22 davem Exp $
+/* $Id: traps.c,v 1.57 1999/03/02 15:42:18 jj Exp $
  * arch/sparc64/kernel/traps.c
  *
  * Copyright (C) 1995,1997 David S. Miller (davem@caip.rutgers.edu)
- * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
+ * Copyright (C) 1997,1999 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
  */
 
 /*
@@ -462,6 +462,9 @@
 
 void die_if_kernel(char *str, struct pt_regs *regs)
 {
+	extern void __show_regs(struct pt_regs * regs);
+	extern void smp_report_regs(void);
+	
 	/* Amuse the user. */
 	printk(
 "              \\|/ ____ \\|/\n"
@@ -471,7 +474,7 @@
 
 	printk("%s(%d): %s\n", current->comm, current->pid, str);
 	__asm__ __volatile__("flushw");
-	show_regs(regs);
+	__show_regs(regs);
 	{
 		struct reg_window *rw = (struct reg_window *)
 			(regs->u_regs[UREG_FP] + STACK_BIAS);
@@ -491,6 +494,10 @@
 		printk("Instruction DUMP:");
 		instruction_dump ((unsigned int *) regs->tpc);
 	}
+#ifdef __SMP__
+	smp_report_regs();
+#endif
+                                                	
 	lock_kernel(); /* Or else! */
 	if(regs->tstate & TSTATE_PRIV)
 		do_exit(SIGKILL);
@@ -498,7 +505,7 @@
 }
 
 extern int handle_popc(u32 insn, struct pt_regs *regs);
-extern int handle_ldq_stq(u32 insn, struct pt_regs *regs);
+extern int handle_ldf_stq(u32 insn, struct pt_regs *regs);
 
 void do_illegal_instruction(struct pt_regs *regs)
 {
@@ -515,7 +522,7 @@
 			if (handle_popc(insn, regs))
 				return;
 		} else if ((insn & 0xc1580000) == 0xc1100000) /* LDQ/STQ */ {
-			if (handle_ldq_stq(insn, regs))
+			if (handle_ldf_stq(insn, regs))
 				return;
 		}
 	}

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)