staticvoid enable_local0_irq(struct irq_data *d)
{ /* don't allow mappable interrupt to be enabled from setup_irq,
* we have our own way to do so */ if (d->irq != SGI_MAP_0_IRQ)
sgint->imask0 |= (1 << (d->irq - SGINT_LOCAL0));
}
staticvoid enable_local1_irq(struct irq_data *d)
{ /* don't allow mappable interrupt to be enabled from setup_irq,
* we have our own way to do so */ if (d->irq != SGI_MAP_1_IRQ)
sgint->imask1 |= (1 << (d->irq - SGINT_LOCAL1));
}
/* * workaround for INT2 bug; if irq == 0, INT2 has seen a fifo full * irq, but failed to latch it into status register
*/ if (irq)
do_IRQ(irq); else
do_IRQ(SGINT_LOCAL0 + 0);
}
/* * IRQs on the INDY look basically (barring software IRQs which we don't use * at all) like: * * MIPS IRQ Source * -------- ------ * 0 Software (ignored) * 1 Software (ignored) * 2 Local IRQ level zero * 3 Local IRQ level one * 4 8254 Timer zero * 5 8254 Timer one * 6 Bus Error * 7 R4k timer (what we use) * * We handle the IRQ according to _our_ priority which is: * * Highest ---- R4k Timer * Local IRQ zero * Local IRQ one * Bus Error * 8254 Timer zero * Lowest ---- 8254 Timer one * * then we just return, if multiple IRQs are pending then we will just take * another exception, big deal.
*/
/* vector handler. this register the IRQ as non-sharable */ if (request_irq(SGI_LOCAL_0_IRQ, no_action, IRQF_NO_THREAD, "local0 cascade", NULL))
pr_err("Failed to register local0 cascade interrupt\n"); if (request_irq(SGI_LOCAL_1_IRQ, no_action, IRQF_NO_THREAD, "local1 cascade", NULL))
pr_err("Failed to register local1 cascade interrupt\n"); if (request_irq(SGI_BUSERR_IRQ, no_action, IRQF_NO_THREAD, "Bus Error", NULL))
pr_err("Failed to register Bus Error interrupt\n");
/* cascade in cascade. i love Indy ;-) */ if (request_irq(SGI_MAP_0_IRQ, no_action, IRQF_NO_THREAD, "mapable0 cascade", NULL))
pr_err("Failed to register mapable0 cascade interrupt\n"); #ifdef USE_LIO3_IRQ if (request_irq(SGI_MAP_1_IRQ, no_action, IRQF_NO_THREAD, "mapable1 cascade", NULL))
pr_err("Failed to register mapable1 cascade interrupt\n"); #endif
#ifdef CONFIG_EISA if (ip22_is_fullhouse()) /* Only Indigo-2 has EISA stuff */
ip22_eisa_init(); #endif
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.7 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.