有了前面两节的基础,我们来看 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);


}