CPSR寄存器
ARM V4的CPSR寄存器(和保存它的SPSR寄存器)中的位分配如下图所示。
处理器模式决定了哪些寄存器是活动的以及对cpsr访问权。
处理器模式要么是特权模式,要么是非特权模式。
特权模式允许对cpsr的完全读/写访问;
与些相反,非特权模式只允许对cpsr的控制域进行读访问,但允许对条件标志的读/写访问。
具体共有7种处理器模式。
6种特权模式(前5种也称为异常处理模式):中止(abort)模式、中断(interrupt request)、快速中断
(fast interrupt request)模式、管理(supervior)模式(有的也称超级用户模式)、未定义(undefined)
模式、系统(system)模式。
1种非特权模式------用户(user)模式。
当处理器访问存储器失败时,进入数据访问中止模式(abort);
中断模式和快速中断模式分别对ARM处理器两种不同级别的中断作出响应;
处理器复位以后,进入管理模式,操作系统内核也通常处于这种模式;
系统模式是一种特殊的用户模式,允许对cpsr的完全读/写访问;
当处理器遇到没有定义的指令或处理器不支持该指令时,进入未定义模式;
用户模式运行应用程序。
摘自<ARM嵌入式系统开发>P18
Table 2.1. ARM 处理器模式
处理器模式 | 体系结构 | 模式编号 |
---|---|---|
用户 | 全部 | 0b10000 |
FIQ - 快速中断请求 | 全部 | 0b10001 |
IRQ - 中断请求 | 全部 | 0b10010 |
超级用户 | 全部 | 0b10011 |
中止 | 全部 | 0b10111 |
未定义 | 全部 | 0b11011 |
系统 | ARMv4 及更高版本 | 0b11111 |
监控 | 仅限安全扩展 | 0b10110 |
除用户模式之外,所有其他模式统称为特权 模式。 它们具有对系统资源的完全访问权限,并可随意更改模式。
需要任务保护的应用程序通常在用户模式下执行。 有些嵌入式应用程序可能完全运行在超级用户模式或系统模式下。
进入除用户模式之外的模式是为了处理异常或访问特许资源。
摘自ARM公司,见:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204ic/Chdddhea.html