Exemplo n.º 1
0
static int rbtx4938_irq_dispatch(int pending)
{
	int irq;

	if (pending & STATUSF_IP7)
		irq = MIPS_CPU_IRQ_BASE + 7;
	else if (pending & STATUSF_IP2) {
		irq = txx9_irq();
		if (irq == RBTX4938_IRQ_IOCINT)
			irq = toshiba_rbtx4938_irq_nested(irq);
	} else if (pending & STATUSF_IP1)
		irq = MIPS_CPU_IRQ_BASE + 0;
	else if (pending & STATUSF_IP0)
		irq = MIPS_CPU_IRQ_BASE + 1;
	else
		irq = -1;
	return irq;
}
Exemplo n.º 2
0
static int rbtx4927_irq_dispatch(int pending)
{
	int irq;

	if (pending & STATUSF_IP7)			/* cpu timer */
		irq = MIPS_CPU_IRQ_BASE + 7;
	else if (pending & STATUSF_IP2) {		/* tx4927 pic */
		irq = txx9_irq();
		if (irq == RBTX4927_IRQ_IOCINT)
			irq = toshiba_rbtx4927_irq_nested(irq);
	} else if (pending & STATUSF_IP0)		/* user line 0 */
		irq = MIPS_CPU_IRQ_BASE + 0;
	else if (pending & STATUSF_IP1)			/* user line 1 */
		irq = MIPS_CPU_IRQ_BASE + 1;
	else
		irq = -1;
	return irq;
}
Exemplo n.º 3
0
asmlinkage void plat_irq_dispatch(void)
{
    unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM;

    if (pending & STATUSF_IP7)            /* cpu timer */
        do_IRQ(TX4927_IRQ_CPU_TIMER);
    else if (pending & STATUSF_IP2) {        /* tx4927 pic */
        int irq = txx9_irq();
#ifdef CONFIG_TOSHIBA_RBTX4927
        if (irq == TX4927_IRQ_NEST_EXT_ON_PIC)
            irq = toshiba_rbtx4927_irq_nested(irq);
#endif
        if (unlikely(irq < 0)) {
            spurious_interrupt();
            return;
        }
        do_IRQ(irq);
    } else if (pending & STATUSF_IP0)        /* user line 0 */
        do_IRQ(TX4927_IRQ_USER0);
    else if (pending & STATUSF_IP1)            /* user line 1 */
        do_IRQ(TX4927_IRQ_USER1);
    else
        spurious_interrupt();
}