ARM寄存器及异常处理过程

ARM寄存器

ARM处理器工作模式

  ARM处理支持7种工作模式:

  • 用户模式(User):ARM处理器正常的程序执行状态,非特权模式
  • 系统模式(System):特权模式,与用户模式使用同样的寄存器组
  • 快速中断(FIQ):用户告诉数据传输或通道处理
  • 外部中断(IRQ):用于通用的中断处理
  • 管理模式(SVC):操作系统使用的保护模式
  • 未定义指令中止模式(Undef):当执行未定义指令时,进入该模式
  • 数据访问中止模式(Abt):当数据或指令预取终止时,进入该模式,用于虚拟存储及存储保护

  ARM处理器状态及工作模式,由CPSR寄存器决定,如下:

ARM异常处理过程

  假设当前ARM处于用户模式,当发生IRQ中断时,ARM处理过程如下:

  1. ARM核拷贝CPSR -> SPSR_irq
  2. 修改CPSR,进入ARM态和IRQ模式
  3. 保存返回地址到LR_irq
  4. 设置PC为相应的异常向量地址
  5. 处理异常(软件部分)
  6. 异常返回--从SPSR_irq中恢复CPSR值,从LR_irq中恢复PC值

  不同异常模式,其异常返回指令不同,如下(arm7)

  •  从SWI和Undef异常返回:  MOVS PC, LR;
  • 从FIQ、IRQ和预取终止返回:SUBS PC, LR, #4
  • 从数据异常返回:SUBS PC, LR, #8

猜你喜欢

转载自www.cnblogs.com/linux-just-for-funny/p/10880991.html
今日推荐