asmlinkage void plat_irq_dispatch(void) { unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; if(pending & CAUSEF_IP7 ){ do_IRQ(cp0_compare_irq); } #if defined (CONFIG_IRQ_GIC) if (pending & (CAUSEF_IP2 | CAUSEF_IP3 | CAUSEF_IP4 | CAUSEF_IP5 | CAUSEF_IP6)) { gic_irqdispatch(); } #else else { rt_irq_dispatch(); } #endif }
asmlinkage void plat_irq_dispatch(void) { unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; if (unlikely(!pending)) { pr_err("Spurious CP0 Interrupt!\n"); spurious_interrupt(); } else { if (pending & CAUSEF_IP7) do_IRQ(cp0_compare_irq); if (pending & (CAUSEF_IP4 | CAUSEF_IP3 | CAUSEF_IP2)) gic_irqdispatch(); } }