patch-2.4.19 linux-2.4.19/arch/mips/cobalt/int-handler.S
Next file: linux-2.4.19/arch/mips/cobalt/irq.c
Previous file: linux-2.4.19/arch/mips/cobalt/Makefile
Back to the patch index
Back to the overall index
- Lines: 104
- Date:
Fri Aug 2 17:39:43 2002
- Orig file:
linux-2.4.18/arch/mips/cobalt/int-handler.S
- Orig date:
Wed Dec 31 16:00:00 1969
diff -urN linux-2.4.18/arch/mips/cobalt/int-handler.S linux-2.4.19/arch/mips/cobalt/int-handler.S
@@ -0,0 +1,103 @@
+/*
+ * Cobalt interrupt handler
+ *
+ * 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) 1995, 1996, 1997 by Ralf Baechle
+ * Copyright (C) 2001 by Liam Davies (ldavies@agile.tv)
+ *
+ */
+#include <asm/asm.h>
+#include <asm/mipsregs.h>
+#include <asm/cobalt/cobalt.h>
+#include <asm/regdef.h>
+#include <asm/stackframe.h>
+
+/*
+ * cobalt_handle_int: Interrupt handler for Cobalt boards
+ */
+ .text
+ .set noreorder
+ .set noat
+ .align 5
+ NESTED(cobalt_handle_int, PT_SIZE, sp)
+ SAVE_ALL
+ CLI
+ .set at
+
+ /*
+ * Get pending Interrupts
+ */
+ mfc0 s0,CP0_CAUSE # get irq mask
+
+ andi a0,s0,CAUSEF_IP2 /* Check for Galileo timer */
+ beq a0,zero,1f
+ andi a0,s0,CAUSEF_IP6 /* Check for Via chip */
+
+ /* Galileo interrupt */
+ jal galileo_irq
+ move a0,sp
+ j ret_from_irq
+ nop
+
+1:
+ beq a0,zero,1f /* Check IP6 */
+ andi a0,s0,CAUSEF_IP3
+
+ /* Via interrupt */
+ jal via_irq
+ move a0,sp
+ j ret_from_irq
+ nop
+
+1:
+ beq a0,zero,1f /* Check IP3 */
+ andi a0,s0,CAUSEF_IP4
+
+ /* Ethernet 0 interrupt */
+ li a0,4
+ jal do_IRQ
+ move a1,sp
+
+ j ret_from_irq
+ nop
+
+1:
+ beq a0,zero,1f /* Check IP4 */
+ andi a0,s0,CAUSEF_IP5
+
+ /* Ethernet 1 interrupt */
+ li a0,13
+ jal do_IRQ
+ move a1,sp
+
+ j ret_from_irq
+ nop
+1:
+ beq a0,zero,1f /* Check IP5 */
+ andi a0,s0,CAUSEF_IP7
+
+ /* Serial interrupt */
+ li a0,7
+ jal do_IRQ
+ move a1,sp
+
+ j ret_from_irq
+ nop
+1:
+ beq a0,zero,1f /* Check IP7 */
+ nop
+
+ /* PCI interrupt */
+ li a0,9
+ jal do_IRQ
+ move a1,sp
+
+1:
+ j ret_from_irq
+ nop
+
+ END(cobalt_handle_int)
+
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)