ARM寄存器及异常处理过程
ARM寄存器
ARM处理器工作模式
ARM处理支持7种工作模式:
- 用户模式(User):ARM处理器正常的程序执行状态,非特权模式
- 系统模式(System):特权模式,与用户模式使用同样的寄存器组
- 快速中断(FIQ):用户告诉数据传输或通道处理
- 外部中断(IRQ):用于通用的中断处理
- 管理模式(SVC):操作系统使用的保护模式
- 未定义指令中止模式(Undef):当执行未定义指令时,进入该模式
- 数据访问中止模式(Abt):当数据或指令预取终止时,进入该模式,用于虚拟存储及存储保护
ARM处理器状态及工作模式,由CPSR寄存器决定,如下:
ARM异常处理过程
假设当前ARM处于用户模式,当发生IRQ中断时,ARM处理过程如下:
- ARM核拷贝CPSR -> SPSR_irq
- 修改CPSR,进入ARM态和IRQ模式
- 保存返回地址到LR_irq
- 设置PC为相应的异常向量地址
- 处理异常(软件部分)
- 异常返回--从SPSR_irq中恢复CPSR值,从LR_irq中恢复PC值(软件部分)
不同异常模式,其异常返回指令不同,如下(arm7)
- 从SWI和Undef异常返回: MOVS PC, LR;
- 从FIQ、IRQ和预取终止返回:SUBS PC, LR, #4
- 从数据异常返回:SUBS PC, LR, #8