*参照元 [#ba0ba0a2] #backlinks *説明 [#jcf597a0] -パス: [[linux-2.6.33/arch/arm/kernel/irq.c]] -FIXME: これは何? --説明 **引数 [#q0b10188] -unsigned int irq -- -struct pt_regs *regs -- --[[linux-2.6.33/pt_regs]] **返り値 [#ma52d6c6] -なし **参考 [#m44ecb05] *実装 [#k2ce2478] /* * do_IRQ handles all hardware IRQ's. Decoded IRQs should not * come via this function. Instead, they should provide their * own 'handler' */ asmlinkage void __exception asm_do_IRQ(unsigned int irq, struct pt_regs *regs) { - --[[linux-2.6.33/asmlinkage]] - --[[linux-2.6.33/__exception]] struct pt_regs *old_regs = set_irq_regs(regs); - --[[linux-2.6.33/set_irq_regs()]] irq_enter(); - --[[linux-2.6.33/irq_enter()]] /* * Some hardware gives randomly wrong interrupts. Rather * than crashing, do something sensible. */ if (unlikely(irq >= NR_IRQS)) { - --[[linux-2.6.33/unlikely()]] - --[[linux-2.6.33/NR_IRQS]] if (printk_ratelimit()) printk(KERN_WARNING "Bad IRQ%u\n", irq); - --[[linux-2.6.33/printk_ratelimit()]] - --[[linux-2.6.33/printk()]] ack_bad_irq(irq); - --[[linux-2.6.33/ack_bad_irq()]] } else { generic_handle_irq(irq); - --[[linux-2.6.33/generic_handle_irq()]] } /* AT91 specific workaround */ irq_finish(irq); - --[[linux-2.6.33/irq_finish()]] irq_exit(); set_irq_regs(old_regs); - --[[linux-2.6.33/irq_exit()]] - --[[linux-2.6.33/set_irq_regs()]] } *コメント [#d0a3f437]