Armv8/Armv9的Pstate寄存器介绍

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相关的功能,后续在介绍。

SSBS, Speculative Store Bypass Safe

TCO, Tag Check Override

UAO, User Access Override

相关推荐
ai产品老杨21 小时前
异构计算时代的视频底座:基于 ZLMediaKit 与 Spring Boot 的 X86/ARM 跨平台架构解析
arm开发·spring boot·音视频
路溪非溪1 天前
如何使用sysfs来排查驱动问题
linux·arm开发·驱动开发
独小乐1 天前
012.整体框架适配SDRAM|千篇笔记实现嵌入式全栈/裸机篇
c语言·汇编·笔记·单片机·嵌入式硬件·arm·gnu
路溪非溪1 天前
如何使用procfs来排查问题
linux·arm开发·驱动开发
木鱼布1 天前
安装arm虚机启动失败
linux·运维·arm开发
Code-keys1 天前
ADSP/ARM 性能/稳定性排查专栏总述
arm开发·算法·边缘计算·dsp开发
青桔柠薯片1 天前
Linux 设备驱动开发环境构建与系统启动机制剖析
linux·arm开发·驱动开发·imx6ull
阿捞21 天前
ESP32 实现在线动态安装库和自动依赖安装-使用uPyPI包管理平台
arm开发
皮皮哎哟1 天前
ARM驱动基础(基于正点原子IMX6ULL Mini)
arm开发·linux内核·imx6ull·nxp·正点原子、·imx6u mini
somi71 天前
ARM-驱动-03 Linux 字符设备驱动开发
linux·arm开发·驱动开发·自用