*参照元 [#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]


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS