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