linux中的异常处理流程

由early_trap_init()函数构造异常向量基址为0xffff0000的异常向量表:

 发生某种异常时,会跳转到相应的处理函数,比如如果发生中断,则会跳到vector_irq:

在vector_irq中保存现场后又会跳到__irq_usr或者__irq_svc(用户模式进中断会跳到__irq_usr,管理模式则是__irq_svc):

 __irq_usr函数最终会跳转到asm_do_IRQ(),这是个C函数了。

整体结构如下:

原文地址:https://www.cnblogs.com/physworld/p/14826284.html