weiqi7777

ARMv8的CPSR

0
阅读(3210)

ARM处理器,有一个寄存器,叫CPSR,保存了当前的处理器状态。但在ARMv8中,AArch64(以下简称A64)和AArch32(以下简称A32)对于这寄存器,有不同的规定。

一、 A64

在A64中,不在使用单一的CPSR寄存器,来保存当前处理器状态,而是用PSTATE来保存处理器状态。

PSTATE,包括以下的一些系统寄存器:

1. NZCV寄存器:保存条件标志

可读可写寄存器。

2. DAIF寄存器: DAIF状态

4种事件的mask。

3. CurrentEL: 当前的 exception level

A64有4个exception level,当前的EL,保存在这个寄存器中。这个寄存器是只读寄存器。

4. SPSel:当前栈的选择

在EL3,EL2,EL1,是可以选择SP,是使用SP_ELx,还是SP_EL0,通过这个寄存器设置。

5. PAN:privileged access never

6. UAO: user access override

以上的寄存器,通过 mrs 指令和 msr 指令进行访问。A64,也提供了几条指令,用来快速访问这些系统寄存器。

二、 A32

使用CPSR

其中T位,表示是arm状态还是thumb状态。

第4位固定为1,表示是A32架构。

0: aarch64

1: aarch32

M[3:0],表示异常模式