patch-2.4.25 linux-2.4.25/arch/mips/sgi-ip27/ip27-nmi.c
Next file: linux-2.4.25/arch/mips/sibyte/cfe/smp.c
Previous file: linux-2.4.25/arch/mips/sgi-ip27/ip27-init.c
Back to the patch index
Back to the overall index
- Lines: 90
- Date:
2004-02-18 05:36:30.000000000 -0800
- Orig file:
linux-2.4.24/arch/mips/sgi-ip27/ip27-nmi.c
- Orig date:
2002-11-28 15:53:10.000000000 -0800
diff -urN linux-2.4.24/arch/mips/sgi-ip27/ip27-nmi.c linux-2.4.25/arch/mips/sgi-ip27/ip27-nmi.c
@@ -52,23 +52,77 @@
*/
void
-nmi_cpu_eframe_save(nasid_t nasid,
- int slice)
+nmi_cpu_eframe_save(nasid_t nasid, int slice)
{
- int i, numberof_nmi_cpu_regs;
- machreg_t *prom_format;
-
- /* Get the total number of registers being saved by the prom */
- numberof_nmi_cpu_regs = sizeof(struct reg_struct) / sizeof(machreg_t);
+ struct reg_struct *nr;
+ int i;
/* Get the pointer to the current cpu's register set. */
- prom_format =
- (machreg_t *)(TO_UNCAC(TO_NODE(nasid, IP27_NMI_KREGS_OFFSET)) +
- slice * IP27_NMI_KREGS_CPU_SIZE);
+ nr = (struct reg_struct *)
+ (TO_UNCAC(TO_NODE(nasid, IP27_NMI_KREGS_OFFSET)) +
+ slice * IP27_NMI_KREGS_CPU_SIZE);
printk("NMI nasid %d: slice %d\n", nasid, slice);
- for (i = 0; i < numberof_nmi_cpu_regs; i++)
- printk("0x%lx ", prom_format[i]);
+
+ /*
+ * Saved main processor registers
+ */
+ for (i = 0; i < 32; ) {
+ if ((i % 4) == 0)
+ printk("$%2d :", i);
+ printk(" %016lx", nr->gpr[i]);
+
+ i++;
+ if ((i % 4) == 0)
+ printk("\n");
+ }
+
+ printk("Hi : (value lost)\n");
+ printk("Lo : (value lost)\n");
+
+ /*
+ * Saved cp0 registers
+ */
+ printk("epc : %016lx %s\n", nr->epc, print_tainted());
+ printk("Status: %08lx ", nr->sr);
+
+ if (nr->sr & ST0_KX)
+ printk("KX ");
+ if (nr->sr & ST0_SX)
+ printk("SX ");
+ if (nr->sr & ST0_UX)
+ printk("UX ");
+
+ switch (nr->sr & ST0_KSU) {
+ case KSU_USER:
+ printk("USER ");
+ break;
+ case KSU_SUPERVISOR:
+ printk("SUPERVISOR ");
+ break;
+ case KSU_KERNEL:
+ printk("KERNEL ");
+ break;
+ default:
+ printk("BAD_MODE ");
+ break;
+ }
+
+ if (nr->sr & ST0_ERL)
+ printk("ERL ");
+ if (nr->sr & ST0_EXL)
+ printk("EXL ");
+ if (nr->sr & ST0_IE)
+ printk("IE ");
+ printk("\n");
+
+ printk("Cause : %08lx\n", nr->cause);
+ printk("PrId : %08x\n", read_c0_prid());
+ printk("BadVA : %016lx\n", nr->badva);
+ printk("ErrEPC: %016lx\n", nr->error_epc);
+ printk("CErr : %016lx\n", nr->cache_err);
+ printk("NMI_SR: %016lx\n", nr->nmi_sr);
+
printk("\n\n");
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)