2 * SNI RM200 PCI specific interrupt handler code.
4 * Copyright (C) 1994, 95, 96, 97, 98, 1999, 2000, 01 by Ralf Baechle
7 #include <asm/mipsregs.h>
8 #include <asm/regdef.h>
10 #include <asm/stackframe.h>
13 * The PCI ASIC has the nasty property that it may delay writes if it is busy.
14 * As a consequence from writes that have not graduated when we exit from the
15 * interrupt handler we might catch a spurious interrupt. To avoid this we
16 * force the PCI ASIC to graduate all writes by executing a read from the
22 NESTED(sni_rm200_pci_handle_int, PT_SIZE, sp)
27 /* Blinken light ... */
31 sb t0, PCIMT_CSLED # write only register
40 andi t1, t0, 0x0800 # hardware interrupt 1
42 andi t1, t0, 0x4000 # hardware interrupt 4
44 andi t1, t0, 0x2000 # hardware interrupt 3
46 andi t1, t0, 0x1000 # hardware interrupt 2
48 andi t1, t0, 0x8000 # hardware interrupt 5
50 andi t1, t0, 0x0400 # hardware interrupt 0
54 j restore_all # spurious interrupt
57 ##############################################################################
59 /* hwint0 should deal with MP agent, ASIC PCI, EISA NMI and debug
61 _hwint0: jal pciasic_hwint0
67 * hwint 1 deals with EISA and SCSI interrupts
69 _hwint1: jal pciasic_hwint1
76 * This interrupt was used for the com1 console on the first prototypes;
77 * it's unsed otherwise
79 _hwint2: jal pciasic_hwint2
85 * hwint 3 are the PCI interrupts A - D
87 _hwint3: jal pciasic_hwint3
93 * hwint 4 is used for only the onboard PCnet 32.
95 _hwint4: jal pciasic_hwint4
100 /* hwint5 is the r4k count / compare interrupt */
101 _hwint5: jal pciasic_hwint5
106 END(sni_rm200_pci_handle_int)