有了前面两节的基础,我们来看 uboot 中断流程就很简单了
首先看 arch/arm/cpu/start.S
==================================================
.globl _start
_start: b start_code
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq
irq:
get_irq_stack
irq_save_user_regs
bl do_irq
irq_restore_user_regs
======================================================
由此我们可以知道,中断处理函数:do_irq
arch\arm\cpu\arm920t\s3c24x0\Interrupts.c
void do_irq (struct pt_regs *pt_regs)
{
struct s3c24x0_interrupt *irq = s3c24x0_get_base_interrupt();
u_int32_t intpnd = readl(&irq->INTPND);
}