由early_trap_init()函数构造异常向量基址为0xffff0000的异常向量表:
发生某种异常时,会跳转到相应的处理函数,比如如果发生中断,则会跳到vector_irq:
在vector_irq中保存现场后又会跳到__irq_usr或者__irq_svc(用户模式进中断会跳到__irq_usr,管理模式则是__irq_svc):
__irq_usr函数最终会跳转到asm_do_IRQ(),这是个C函数了。
整体结构如下: