aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/mips/sgi-ip32/ip32-irq.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/mips/sgi-ip32/ip32-irq.c b/arch/mips/sgi-ip32/ip32-irq.c
index 22a6df94b4a1..de01c9815bdd 100644
--- a/arch/mips/sgi-ip32/ip32-irq.c
+++ b/arch/mips/sgi-ip32/ip32-irq.c
@@ -507,13 +507,14 @@ static void ip32_irq0(struct pt_regs *regs)
507 int irq = 0; 507 int irq = 0;
508 508
509 crime_int = crime->istat & crime_mask; 509 crime_int = crime->istat & crime_mask;
510 irq = ffs(crime_int); 510 irq = __ffs(crime_int);
511 crime_int = 1 << (irq - 1); 511 crime_int = 1 << irq;
512 512
513 if (crime_int & CRIME_MACEISA_INT_MASK) { 513 if (crime_int & CRIME_MACEISA_INT_MASK) {
514 unsigned long mace_int = mace->perif.ctrl.istat; 514 unsigned long mace_int = mace->perif.ctrl.istat;
515 irq = ffs(mace_int & maceisa_mask) + 32; 515 irq = __ffs(mace_int & maceisa_mask) + 32;
516 } 516 }
517 irq++;
517 DBG("*irq %u*\n", irq); 518 DBG("*irq %u*\n", irq);
518 do_IRQ(irq, regs); 519 do_IRQ(irq, regs);
519} 520}