图示退出异常过程 在异常处理结束后,异常 系统模式 IRQ模式 处理程序完成以下动作: 程序A RQ服务程序 ·将SPSR寄存器的值复制回 CPSR寄存器; 释 ■将LR寄存的值减去一个常 量后复制到PC寄存器,跳 转到被中断的用户程序。 return LR sys BackAddr 寄存器 PC BackAddr-4 N Z C V I F T MOD CPSR 0?1 SYS SPSR ?”表示对该位不关心
在异常处理结束后,异常 处理程序完成以下动作: 程序A IRQ服务程序 系统模式 IRQ模式 程 序 寄 存 器 组 图示退出异常过程 LR_sys SPSR_irq LR LR_irq PC CPSR SPSR ? ? ? ? . . . 0 ? 1 SYS N Z C V . . . I F T MOD ▪将SPSR寄存器的值复制回 CPSR寄存器; ▪将LR寄存的值减去一个常 量后复制到PC寄存器,跳 转到被中断的用户程序。 ? ? ? ? . . . 1 ? 0 IRQ BackAddr JumpAddr return ????. . .0?1SYS ? ? ? ? . . . 0 ? 1 SYS BackAddr-4 “?”表示对该位不关心
3.9异常 ·快速中断请求 快速中新请求(F引Q)适用于对一个突发事件的快速 响应,这得益于在ARM状态中,快中断模式有8个专用 的寄存器可用来满足寄存器保护的需要(这可以加速 上下文切换的速度)。 不管异常入口是来自ARM状态还是Thumb状态, F引Q处理程序都会通过执行下面的指令从中断返回: SUBS PC,R14 fig,#4 在一个特权模式中,可以通过置位CPSR中的F位 来禁止F引Q异常
快速中断请求(FIQ)适用于对一个突发事件的快速 响应,这得益于在ARM状态中,快中断模式有8个专用 的寄存器可用来满足寄存器保护的需要(这可以加速 上下文切换的速度)。 不管异常入口是来自ARM状态还是Thumb状态, FIQ处理程序都会通过执行下面的指令从中断返回: SUBS PC,R14_fiq,#4 在一个特权模式中,可以通过置位CPSR中的F位 来禁止FIQ异常。 3.9 异常 • 快速中断请求
3.9异常 ·中断请求 中断请求(IRQ)异常是一个由nlRQ输入端的低 电平所产生的正常中断(在具体的芯片中,nlRQ由片 内外设拉低,lRQ是内核的一个信号,对用户不可 见)。IRQ的优先级低于FIQ。对于FIQ序列它是被屏 蔽的。任何时候在一个特权模式下,都可通过置位 CPSR中的l位来禁止IRQ。 不管异常入口是来自ARM状态还是Thumb状态, 「引Q处理程序都会通过执行下面的指令从中断返回: SUBS PC,R14 fig,#4
中断请求(IRQ)异常是一个由nIRQ输入端的低 电平所产生的正常中断(在具体的芯片中,nIRQ由片 内外设拉低,nIRQ是内核的一个信号,对用户不可 见)。IRQ的优先级低于FIQ。对于FIQ序列它是被屏 蔽的。任何时候在一个特权模式下,都可通过置位 CPSR中的I 位来禁止IRQ。 不管异常入口是来自ARM状态还是Thumb状态, FIQ处理程序都会通过执行下面的指令从中断返回: SUBS PC,R14_fiq,#4 3.9 异常 • 中断请求
3.9异常 。中止 中止发生在对存储器的访问不能完成时,中止 包含两种类型: ■预取中止发生在指令预取过程中 ■数据中止发生在对数据访问时
中止发生在对存储器的访问不能完成时,中止 包含两种类型: ▪预取中止 发生在指令预取过程中 ▪数据中止 发生在对数据访问时 3.9 异常 • 中止
3.9异常 ·中止一预取指中止 当发生预取中止时,ARM7TDMl内核将预取的 指令标记为无效,但在指令到达流水线的执行阶段 时才进入异常。如果指令在流水线中因为发生分支 而没有被执行,中止将不会发生。 在处理中止的原因之后,不管处于哪种处理器 操作状态,处理程序都会执行下面的指令恢复PC和 CPSR并重试被中止的指令: SUBS PC,R14 abt,#4
当发生预取中止时,ARM7TDMI内核将预取的 指令标记为无效,但在指令到达流水线的执行阶段 时才进入异常。如果指令在流水线中因为发生分支 而没有被执行,中止将不会发生。 在处理中止的原因之后,不管处于哪种处理器 操作状态,处理程序都会执行下面的指令恢复PC和 CPSR并重试被中止的指令: SUBS PC,R14_abt,#4 3.9 异常 • 中止——预取指中止