patch-2.4.0-test5 linux/arch/alpha/kernel/sys_noritake.c
Next file: linux/arch/alpha/lib/csum_partial_copy.c
Previous file: linux/arch/alpha/kernel/sys_eb64p.c
Back to the patch index
Back to the overall index
- Lines: 58
- Date:
Tue Jul 18 22:58:28 2000
- Orig file:
v2.4.0-test4/linux/arch/alpha/kernel/sys_noritake.c
- Orig date:
Sun Mar 19 18:35:30 2000
diff -u --recursive --new-file v2.4.0-test4/linux/arch/alpha/kernel/sys_noritake.c linux/arch/alpha/kernel/sys_noritake.c
@@ -40,8 +40,10 @@
noritake_update_irq_hw(int irq, int mask)
{
int port = 0x54a;
- if (irq >= 16) mask >>= 16;
- if (irq >= 16) port = 0x54c;
+ if (irq >= 32) {
+ mask >>= 16;
+ port = 0x54c;
+ }
outw(mask, port);
}
@@ -260,6 +262,35 @@
return slot;
}
+#if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO)
+static void
+noritake_apecs_machine_check(unsigned long vector, unsigned long la_ptr,
+ struct pt_regs * regs)
+{
+#define MCHK_NO_DEVSEL 0x205U
+#define MCHK_NO_TABT 0x204U
+
+ struct el_common *mchk_header;
+ unsigned int code;
+
+ mchk_header = (struct el_common *)la_ptr;
+
+ /* Clear the error before any reporting. */
+ mb();
+ mb(); /* magic */
+ draina();
+ apecs_pci_clr_err();
+ wrmces(0x7);
+ mb();
+
+ code = mchk_header->code;
+ process_mcheck_info(vector, la_ptr, regs, "NORITAKE APECS",
+ (mcheck_expected(0)
+ && (code == MCHK_NO_DEVSEL
+ || code == MCHK_NO_TABT)));
+}
+#endif
+
/*
* The System Vectors
@@ -272,7 +303,7 @@
DO_DEFAULT_RTC,
DO_APECS_IO,
DO_APECS_BUS,
- machine_check: apecs_machine_check,
+ machine_check: noritake_apecs_machine_check,
max_dma_address: ALPHA_MAX_DMA_ADDRESS,
min_io_address: EISA_DEFAULT_IO_BASE,
min_mem_address: APECS_AND_LCA_DEFAULT_MEM_BASE,
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)