patch-2.4.20 linux-2.4.20/arch/mips/sgi-ip32/crime.c
Next file: linux-2.4.20/arch/mips/sgi-ip32/ip32-berr.c
Previous file: linux-2.4.20/arch/mips/sgi-ip32/Makefile
Back to the patch index
Back to the overall index
- Lines: 50
- Date:
Thu Nov 28 15:53:10 2002
- Orig file:
linux-2.4.19/arch/mips/sgi-ip32/crime.c
- Orig date:
Wed Dec 31 16:00:00 1969
diff -urN linux-2.4.19/arch/mips/sgi-ip32/crime.c linux-2.4.20/arch/mips/sgi-ip32/crime.c
@@ -0,0 +1,49 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) 2001 Keith M Wesolowski
+ */
+#include <linux/types.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <asm/ip32/crime.h>
+#include <asm/ptrace.h>
+
+void __init crime_init (void)
+{
+ u64 id = crime_read_64 (CRIME_ID);
+ u64 rev = id & CRIME_ID_REV;
+
+ id = (id & CRIME_ID_IDBITS) >> 4;
+
+ printk ("CRIME id %1lx rev %ld detected at %016lx\n", id, rev,
+ (unsigned long) CRIME_BASE);
+}
+
+/* XXX Like on Sun, these give us various useful information to printk. */
+void crime_memerr_intr (unsigned int irq, void *dev_id, struct pt_regs *regs)
+{
+ u64 memerr = crime_read_64 (CRIME_MEM_ERROR_STAT);
+ u64 addr = crime_read_64 (CRIME_MEM_ERROR_ADDR);
+ memerr &= CRIME_MEM_ERROR_STAT_MASK;
+
+ printk ("CRIME memory error at physaddr 0x%08lx status %08lx\n",
+ addr << 2, memerr);
+
+ crime_write_64 (CRIME_MEM_ERROR_STAT, 0);
+}
+
+void crime_cpuerr_intr (unsigned int irq, void *dev_id, struct pt_regs *regs)
+{
+ u64 cpuerr = crime_read_64 (CRIME_CPU_ERROR_STAT);
+ u64 addr = crime_read_64 (CRIME_CPU_ERROR_ADDR);
+ cpuerr &= CRIME_CPU_ERROR_MASK;
+ addr <<= 2UL;
+
+ printk ("CRIME CPU interface error detected at %09lx status %08lx\n",
+ addr, cpuerr);
+
+ crime_write_64 (CRIME_CPU_ERROR_STAT, 0);
+}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)