-asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
-{
- unsigned int cause = read_c0_cause();
- unsigned int status = read_c0_status();
- unsigned int pending = cause & status;
-
- if (pending & STATUSF_IP7) {
- do_IRQ(7, regs);
- } else if (pending & STATUSF_IP2) {
-#ifdef CONFIG_HYPERTRANSPORT
- ll_ht_smp_irq_handler(2, regs);
-#else
- do_IRQ(2, regs);
-#endif
- } else if (pending & STATUSF_IP3) {
- do_IRQ(3, regs);
- } else if (pending & STATUSF_IP4) {
- do_IRQ(4, regs);
- } else if (pending & STATUSF_IP5) {
-#ifdef CONFIG_SMP
- titan_mailbox_irq(regs);
-#else
- do_IRQ(5, regs);
-#endif
- } else if (pending & STATUSF_IP6) {
- do_IRQ(4, regs);
- }
-}
-