From: <aot...@us...> - 2004-05-01 15:22:58
|
Update of /cvsroot/gc-linux/linux/arch/ppc/platforms In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29454/arch/ppc/platforms Modified Files: gamecube_pic.c Log Message: Rework ->get_irq() to: - Use readl() instead of GAMECUBE_IN() (this'll be going away RSN). - Use a (simpler) `for' loop to determine highest numbered IRQ generating an interrupt. - Remove debug printk's. Index: gamecube_pic.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/platforms/gamecube_pic.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- gamecube_pic.c 25 Apr 2004 18:57:28 -0000 1.2 +++ gamecube_pic.c 1 May 2004 15:22:49 -0000 1.3 @@ -72,25 +72,16 @@ */ int gamecube_get_irq(struct pt_regs *regs) { - int irq = 0; + int irq; u_int irq_status, irq_test = 1; - pr_debug("get_irq(): %x, %x\n", GAMECUBE_IN(GAMECUBE_PIIM), - GAMECUBE_IN(GAMECUBE_PIIC)); - irq_status = GAMECUBE_IN(GAMECUBE_PIIC) & GAMECUBE_IN(GAMECUBE_PIIM); - - if (irq_status == 0) { - pr_debug("GC-PIC: Received a spurious IRQ\n"); - return -1; -/* while(1);*/ - } + irq_status = readl(GAMECUBE_PIIC) & readl(GAMECUBE_PIIM); + if (irq_status == 0) + return -1; /* no more IRQs pending */ - do { + for (irq = 0; irq < GAMECUBE_IRQS; irq++, irq_test <<= 1) if (irq_status & irq_test) break; - irq++; - irq_test <<= 1; - } while (irq < GAMECUBE_IRQS); return irq; } |