arm 硬件和软件对异常的处理

对IA32(X86)而言,当发现异常时,CPU硬件做了很多事情,比如切换 SP,CR3,CS等等(读取TSS),而对于ARM来说,处理的流程如下

CPU 硬件:

<1> : 将发生异常的下一条指令保存至 LR_xxx

<2> : 备份当前 CPSR 到该模式的 SPSR_xxx

<3> : 重置修改 CPSR,强制进入 相应的模式,强制进入ARM模式,关闭 FIQ/IRQ 响应

<4> : 修改PC = (reset = 0/0xFFFF0000,undef = 4/0xFFFF0004...... )

 

OS(软件)

<1> : 切换 sp 

<2> : 保存上下文 {r0-r12,sp}

<3> : 执行处理函数

<4> : 执行函数返回

<4> : 恢复上下文{r0-r12,sp}

<5> : 恢复 SPSR_xxx,到 CPSR

<6> : 从 LR_XX恢复到 PC

 

posted @ 2013-04-23 14:32  moon_cat  Views(264)  Comments(0)    收藏  举报