当异常产生时,ARM core会完成以下流程:
1.拷贝CPSR到SPSR_mode
2.设置适当的CPSR位:
改变处理器状态进入ARM态
改变处理器模式进入相应的异常模式
设置中断禁止位禁止相应中断(如果需要)
3.保存返回地址到LR_mode
4.设置PC为相应的异常向量
返回时,异常处理需要:(此时,需要程序员编写相应代码)
1.从SPSR_mode恢复CPSR
2.从LR_mode恢复PC
注意:这些操作只能在ARM态执行,但是中断处理函数中,处理器可以切换到THUMB态,但中断返回时必须是ARM态
vector table
0x00 reset
0x04 undefined instruction
0x08 SWI
0x0c prefetch abort
0x10 data abort
0x14 (reserved)
0x18 IRQ
0x1c FIQ
当外部中断产生的时候,PC指针会自动跳转到异常向量表,执行该地址的跳转指令