rt5350 中断处理分析
1.?? arch/mips/kernel/genex.S
????? j??? plat_irq_dispatch
2.? arch/mips/rt2880/irq.c
???? plat_irq_dispatch
??????????????? rt2880_irqdispatch
?????????????????????????? do_IRQ
???? do_IRQ定義在?? include/asm-mips/irq.h? 這個頭文件中,asm-mips這個目錄鏈接到asm這里,所以在
????arch/mips/rt2880/irq.c這個文件中 #include <asm/irq.h>
????#define do_IRQ(irq)?? ??? ??? ??? ??? ??? ??? ?\
??? do {?? ??? ??? ??? ??? ??? ??? ??? ??? ?????????????????? \
?? ???????? irq_enter();?? ??? ??? ??? ??? ??? ??? ??????? \
?? ???????? __DO_IRQ_SMTC_HOOK(irq);?? \
?? ???????? generic_handle_irq(irq);?? ??? ??? ??? \
?? ???????? irq_exit();?? ??? ??? ??? ??? ??? ??? ??????????? \
??? } while (0)
???
?? generic_handle_irq定義在? include/linux/irq.h 中,arch/mips/rt2880/irq.c這個文件中? #include <linux/hardirq.h>
?? 在?include/linux/hardirq.h 中 #include <asm/hardirq.h>? ,在?include/asm_mips/hardirq.h 中 #include <linux/irq.h>
?? 至此, do_IRQ和 generic_handle_irq 都被包含進了arch/mips/rt2880/irq.c中了。
???
??? static inline void generic_handle_irq(unsigned int irq)
??? {
?? ????????? struct irq_desc *desc = irq_desc + irq;
??????????? #ifdef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ
?? ????????? desc->handle_irq(irq, desc);
???????????? #else
?? ???????? if (likely(desc->handle_irq)){
?? ??? ???????????? desc->handle_irq(irq, desc);
?? ???????? }
?? ???????? else{
?? ??? ??????????? __do_IRQ(irq);
?? ? ? ? ?? }
?????????? #endif
??? }
?? 最終調用到了我們熟悉的desc->handle_irq
?????????????
總結
以上是生活随笔為你收集整理的rt5350 中断处理分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tiny6410上安装debian基本系
- 下一篇: A20 配置