patch-2.4.18 linux/arch/ppc/kernel/ppc8260_pic.c
Next file: linux/arch/ppc/kernel/ppc8xx_pic.c
Previous file: linux/arch/ppc/kernel/pmac_time.c
Back to the patch index
Back to the overall index
- Lines: 41
- Date:
Thu Feb 7 19:20:05 2002
- Orig file:
linux.orig/arch/ppc/kernel/ppc8260_pic.c
- Orig date:
Mon Feb 18 20:18:39 2002
diff -Naur -X /home/marcelo/lib/dontdiff linux.orig/arch/ppc/kernel/ppc8260_pic.c linux/arch/ppc/kernel/ppc8260_pic.c
@@ -85,6 +85,22 @@
sipnr[word] = 1 << (31 - bit);
}
+static void m8260_end_irq(unsigned int irq_nr)
+{
+ int bit, word;
+ volatile uint *simr;
+
+ if (!(irq_desc[irq_nr].status & (IRQ_DISABLED|IRQ_INPROGRESS))) {
+
+ bit = irq_to_siubit[irq_nr];
+ word = irq_to_siureg[irq_nr];
+
+ simr = &(immr->im_intctl.ic_simrh);
+ ppc_cached_irq_mask[word] |= (1 << (31 - bit));
+ simr[word] = ppc_cached_irq_mask[word];
+ }
+}
+
struct hw_interrupt_type ppc8260_pic = {
" 8260 SIU ",
NULL,
@@ -92,6 +108,7 @@
m8260_unmask_irq,
m8260_mask_irq,
m8260_mask_and_ack,
+ m8260_end_irq,
0
};
@@ -106,6 +123,9 @@
* to get the irq number. */
bits = immr->im_intctl.ic_sivec;
irq = bits >> 26;
+
+ if (irq == 0)
+ return(-1);
#if 0
irq += ppc8260_pic.irq_offset;
#endif
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)