ARM 体系的异常中断
SPSR_mode 寄存器内容复制到当前程序状态寄存器 CPSR 中。该指令只能在特权模式下使用。
2.IRQ和 FIQ 异常中断处理程序的返回
许 IRQ 中断及 FIQ 中断。如果有中断引脚有效,并且系统允许该中断产生,处理器将产生
IRQ 异常中断或 FIQ 异常中断。当 IRQ 和FIQ 异常中断产生时,程序计数器 PC 的值也经更
新,它指向当前指令后面第 3 条指令(对预 ARM 指令来说,它指向当前指令地址加 12 个字
节的位置;对于 Thumb 指令来说,它指向当前指令地址加 6 个字节的位置)。当 IRQ 和 FIQ
异常中断发生时,处理器将值(PC-4)保存到异常模式下的寄存器 lr_mode 中。这时(PC-4)
即指向当前指令后的第 2 条指令。因此返回操作可以通过下面的指令来实现:
该指令将寄存器LR中的值减4后,复制到程序计数器PC中,实现程序返回,同时将SPSR_mode
寄存器内容复制到当前程序状态寄存器 CPSR 中。
当异常中断处理程序中使用了数据栈时,可以通过下面的指令进入异常中断处理程序时保存
被中断程序的执行现场。异常中断处理程序中使用的数据栈由用户提供。
SPSR_mode 寄存器内容复制到当前程序程序寄存器 CPSR 中。该指令只能在特权模式下使用。
3.预取中止异常中断处理程序的返回
在指令预取时,如果目标地址时非法的,该指令将被标记称有问题的指令。这时,流水线上
该指令之前的指令继续执行。当执行到该被标记称有问题的指令时,处理器产生指令预取中
止异常中断。
指令。因此指令预取中止异常中断程序应该返回到产生该指令预取中止异常中断的指令处。
而不是像前面两种情况下返回到发生中断的指令的下一条指令。
时,程序计数器 PC 的值还未更新,指向它当前指令后面第 2 条指令(对于 ARM 指令来说,
它指向当前指令地址加 8 各字节的位置;对于 Thumb 指令来说,它指向当前指令地址 4个字
节的位置)。当指令预取中止异常中断发生时,处理器将值(PC-4)保存到异常模式下的寄
存器 lr_mode 中。这时(PC-4)即指向当前指令的下一条指令。因此返回操作可以通过下面
的指令来实现:
SUSB
该指令将寄存器 LR 中的值减 4 后,复制到程序计数器 PC 中,实现程序的返回,同时将
SPSR_mode 寄存器内容复制到当前程序状态寄存器 CPSR 中。
时保存被中断程序的执行现场,在推出异常中断处理程序时恢复被中断程序的执行现场。异
常中断处理程序中使用的数据栈由用户提供。
SPSR_mode 寄存器内容复制到当前程序状态寄存器 CPSR 中。该指令只能在特权模式下使用。
4.数据访问中止异常中断处理程序返回
ARM体系异常中 相关文章:
- ARM体系的异常中断(11-09)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)