PSTATE概述
在Armv7及其之前,有一个重要的寄存器叫做程序状态寄存器CPSR,但是到了Armv8/Armv9的aarch64架构时,删除了CPSR寄存器,改为了PSTATE(PE状态寄存器)。
PSTATE表示一组小寄存器的集合,在软件中不能直接访问PSTATE,需访问PSTATE中的小寄存器。 具体方法:使用寄存器的方式方法。MSR/MRS指令。
以下给大家列出来PSTATE的概览和每一个寄存器在PSTAE大寄存器中的memory Layout位置
ALLINT
仅当实现 FEAT_NMI 时,此寄存器才存在。否则,对 ALLINT 的直接访问是UNDEFINED
CurrentEL
表示当前的异常等级。
DAIF
中断掩码比特位。分别是Debug、Serror、IRQ、FIQ的MASK位。
DIT
只有当FEAT_DIT 实现时,该比特位才有意义,否则访问该寄存器就是就是UNDEFINED
NZCV
条件标志比特位。
MRS <Xt>, NZCV
MSR NZCV, <Xt>
PAN
特权等级不允许访问寄存器。
EL0 Translation regime输出的地址,不让特权等级程序访问。
PM
当FEAT_EBEP 实现时,才有效。
SPSel
SP栈指针选择比特位。 选择SP位 SP_EL0 或SP_ELx
SVCR
SVE相关的功能,后续在介绍。