diff options
Diffstat (limited to 'arch/mips/sibyte/sb1250/irq.c')
-rw-r--r-- | arch/mips/sibyte/sb1250/irq.c | 17 |
1 files changed, 1 insertions, 16 deletions
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c index 1de71adec6c6..a451b4c7732d 100644 --- a/arch/mips/sibyte/sb1250/irq.c +++ b/arch/mips/sibyte/sb1250/irq.c | |||
@@ -419,21 +419,6 @@ static void sb1250_kgdb_interrupt(struct pt_regs *regs) | |||
419 | 419 | ||
420 | #endif /* CONFIG_KGDB */ | 420 | #endif /* CONFIG_KGDB */ |
421 | 421 | ||
422 | static inline int dclz(unsigned long long x) | ||
423 | { | ||
424 | int lz; | ||
425 | |||
426 | __asm__ ( | ||
427 | " .set push \n" | ||
428 | " .set mips64 \n" | ||
429 | " dclz %0, %1 \n" | ||
430 | " .set pop \n" | ||
431 | : "=r" (lz) | ||
432 | : "r" (x)); | ||
433 | |||
434 | return lz; | ||
435 | } | ||
436 | |||
437 | extern void sb1250_timer_interrupt(struct pt_regs *regs); | 422 | extern void sb1250_timer_interrupt(struct pt_regs *regs); |
438 | extern void sb1250_mailbox_interrupt(struct pt_regs *regs); | 423 | extern void sb1250_mailbox_interrupt(struct pt_regs *regs); |
439 | extern void sb1250_kgdb_interrupt(struct pt_regs *regs); | 424 | extern void sb1250_kgdb_interrupt(struct pt_regs *regs); |
@@ -490,6 +475,6 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
490 | mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(), | 475 | mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(), |
491 | R_IMR_INTERRUPT_STATUS_BASE))); | 476 | R_IMR_INTERRUPT_STATUS_BASE))); |
492 | if (mask) | 477 | if (mask) |
493 | do_IRQ(63 - dclz(mask), regs); | 478 | do_IRQ(fls64(mask) - 1, regs); |
494 | } | 479 | } |
495 | } | 480 | } |