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

浙公网安备 33010602011771号