irq_handler(entry-armv.S)->arch_irq_handler_default(entry-macro-multi.S)->asm_do_IRQ(arch/arm/kernel/irq.c)->handle_IRQ(irq.c: 参数是irq号)->generic_handle_irq(kernel/irq/irqdesc.c)->generic_handle_irq_desc(include/linux/irqdesc.h)->handle_percpu_devid_irq(kernel/irq/chip.c:每个中断号对应一个)-> desc->action->handler(request_irq将注册这个)
gic_init_irq(MACHINE_START:arch/arm/mach-omap2/board-omap4panda.c)->gic_init(arch/arm/mach-omap2/omap4-common.c)->gic_dist_init(common/gic.c)->irq_set_chip_and_handler(common/gic.c: handle_percpu_devid_irq)
irq number在arch_irq_handler_default中调用get_irqnr_and_base访问gic得到. 寄存器的描述参考:
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388i/index.html的cotex_a9的mpcore trm的interrupt controller的interrupt interface register descriptions. 可惜也没有详细的寄存器的介绍。可能其他gic的文档里有吧。
http://hnwwff.blog.163.com/blog/static/32169092201142473043559/: request_irq
http://liu1227787871.blog.163.com/blog/static/205363197201281011450559/:asm_do_irq