patch-2.4.19 linux-2.4.19/arch/mips/mips-boards/generic/mipsIRQ.S

Next file: linux-2.4.19/arch/mips/mips-boards/generic/pci.c
Previous file: linux-2.4.19/arch/mips/mips-boards/generic/init.c
Back to the patch index
Back to the overall index

diff -urN linux-2.4.18/arch/mips/mips-boards/generic/mipsIRQ.S linux-2.4.19/arch/mips/mips-boards/generic/mipsIRQ.S
@@ -56,6 +56,10 @@
  *             6        Hardware (ignored)
  *             7        R4k timer (what we use)
  *
+ * Note: On the SEAD board thing are a little bit different.
+ *       Here IRQ 2 (hw0) is wired to the UART0 and IRQ 3 (hw1) is wired
+ *       wired to UART1.
+ *	
  * We handle the IRQ according to _our_ priority which is:
  *
  * Highest ----     R4k Timer
@@ -90,14 +94,21 @@
 	 nop
 
 1:
+#if defined(CONFIG_MIPS_SEAD) 	
 	beq	a0, zero, 1f
-	 nop
-
+	 andi	a0, s0, CAUSEF_IP3	# delay slot, check hw1 interrupt
+#else
+	beq	a0, zero, 1f		# delay slot, check hw3 interrupt
+ 	 andi	a0, s0, CAUSEF_IP5	
+#endif
+	
 	/* Wheee, combined hardware level zero interrupt. */
 #if defined(CONFIG_MIPS_ATLAS)
 	jal	atlas_hw0_irqdispatch
 #elif defined(CONFIG_MIPS_MALTA)
 	jal	malta_hw0_irqdispatch
+#elif defined(CONFIG_MIPS_SEAD)
+	jal	sead_hw0_irqdispatch
 #else
 #error "MIPS board not supported\n"	
 #endif
@@ -107,6 +118,24 @@
 	 nop				# delay slot
 
 1:
+#if defined(CONFIG_MIPS_SEAD) 	
+	beq	a0, zero, 1f
+	 andi	a0, s0, CAUSEF_IP5	# delay slot, check hw3 interrupt
+	jal	sead_hw1_irqdispatch
+	 move	a0, sp			# delay slot	
+	j	ret_from_irq
+	 nop				# delay slot
+1:	
+#endif	
+
+	beq	a0, zero, 1f            # check hw3 (coreHI) interrupt
+	 nop
+	jal	corehi_irqdispatch
+	 move	a0, sp			
+	j	ret_from_irq
+	 nop				
+1:	
+
 	/*
 	 * Here by mistake?  This is possible, what can happen is that by the
 	 * time we take the exception the IRQ pin goes low, so just leave if

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)