linux中的异常处理流程

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

 

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

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

 

 

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

整体结构如下:

 

posted @ 2021-05-29 20:28  Feiiiiii  阅读(373)  评论(0编辑  收藏  举报