asmlinkage void plat_irq_dispatch(void) { u32 cause; #if defined(CONFIG_BCM_PWRMNGT) || defined(CONFIG_BCM_PWRMNGT_MODULE) // BcmPwrMngtResumeFullSpeed(); #endif while((cause = (read_c0_cause() & read_c0_status() & CAUSEF_IP))) { if (cause & CAUSEF_IP7) { do_IRQ(MIPS_TIMER_INT); } else if (cause & CAUSEF_IP0) do_IRQ(INTERRUPT_ID_SOFTWARE_0); else if (cause & CAUSEF_IP1) do_IRQ(INTERRUPT_ID_SOFTWARE_1); #if defined(CONFIG_BCM93380) #if defined(CONFIG_BCM_LOT1) else if (cause & CAUSEF_IP4) irq_dispatch_int(3); else if (cause & CAUSEF_IP6) irq_dispatch_int(4); #endif else if (cause & CAUSEF_IP3) irq_dispatch_int(0); else if (cause & CAUSEF_IP5) irq_dispatch_int(1); #elif defined(CONFIG_BCMKILAUEA) || defined(CONFIG_BCM93383) #if defined(CONFIG_BCM_LOT1) else if (cause & CAUSEF_IP4) irq_dispatch_int(3); else if (cause & CAUSEF_IP6) irq_dispatch_int(4); #else else if (cause & CAUSEF_IP5) irq_dispatch_int(0); else if (cause & CAUSEF_IP2) irq_dispatch_int(1); #endif #else #if defined (CONFIG_SMP) else if (cause & (CAUSEF_IP2 | CAUSEF_IP3)) #else else if (cause & CAUSEF_IP2) #endif irq_dispatch_int(); #endif } }
asmlinkage void plat_irq_dispatch(void) { u32 cause; while((cause = (read_c0_cause() & read_c0_status() & CAUSEF_IP))) { if (cause & CAUSEF_IP0) { do_IRQ(INTERRUPT_ID_SOFTWARE_0); } if (cause & CAUSEF_IP1) { do_IRQ(INTERRUPT_ID_SOFTWARE_1); } if (cause & CAUSEF_IP2) { irq_dispatch_int(CAUSEF_IP2); } if (cause & CAUSEF_IP3) { irq_dispatch_int(CAUSEF_IP3); } if (cause & CAUSEF_IP4) { irq_dispatch_int(CAUSEF_IP4); } if (cause & CAUSEF_IP5) { irq_dispatch_int(CAUSEF_IP5); } if (cause & CAUSEF_IP6) { irq_dispatch_int(CAUSEF_IP6); } if (cause & CAUSEF_IP7) { do_IRQ(MIPS_TIMER_INT); } } }
asmlinkage void plat_irq_dispatch(void) { unsigned long cause; cause = read_c0_status() & read_c0_cause() & ST0_IM; if (cause & CAUSEF_IP7) do_IRQ(7); else if (cause & CAUSEF_IP2) irq_dispatch_int(); else if (cause & CAUSEF_IP3) irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_0); else if (cause & CAUSEF_IP4) irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_1); else if (cause & CAUSEF_IP5) irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_2); else if (cause & CAUSEF_IP6) { irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_3); local_irq_disable(); } }
asmlinkage void plat_irq_dispatch(void) { u32 cause; #ifdef CONFIG_BCM_HOSTMIPS_PWRSAVE BcmPwrMngtResumeFullSpeed(); #endif while((cause = (read_c0_cause() & read_c0_status() & CAUSEF_IP))) { if (cause & CAUSEF_IP7) do_IRQ(MIPS_TIMER_INT); else if (cause & CAUSEF_IP0) do_IRQ(INTERRUPT_ID_SOFTWARE_0); else if (cause & CAUSEF_IP1) do_IRQ(INTERRUPT_ID_SOFTWARE_1); #if defined (CONFIG_SMP) else if (cause & (CAUSEF_IP2 | CAUSEF_IP3)) #else else if (cause & CAUSEF_IP2) #endif irq_dispatch_int(); } }