ARMv8-A架构基础之系统寄存器

原文:https://www.jianshu.com/p/083a46b7bcfe

在AArch64中,系统配置是通过使用MSR和MRS指令来控制的(通过MSR和MRS指令访问系统寄存器)。 这与ARMv7-A不同,在ARMv7-A中通常通过协处理器15(CP15)操作系统寄存器。

寄存器的名称通常暗示着它能被访问的最低的异常级别。 例如:

  • 可以从EL1,EL2和EL3访问TTBR0_EL1。
  • 可以从EL2和EL3访问TTBR0_EL2。

具有后缀_ELn的寄存器在一些或所有级别上都有单独的存储副本,EL0除外。 只有很少的系统寄存器可以从EL0访问,比如缓存类型寄存器(CTR_EL0)就可以。

访问系统寄存器的代码采用以下形式:

MRS X0,TTBR0_EL1 //将TTBR0_EL1移入X0
MSR TTBR0_EL1,X0 //将X0移入TTBR0_EL1

ARM架构的之前版本使用协处理器来进行系统配置。 但是,AArch64不支持协处理器。

下表显示了异常级别,这些异常级别具有每个寄存器的单独副本。 例如,单独的辅助控制寄存器(ACTLR)以ACTLR_EL1,ACTLR_EL2和ACTLR_EL3的形式存在。

名称寄存器说明n的允许值
ACTLR_ELn辅助控制寄存器控制处理器特定的功能。1,2,3
CCSIDR_ELn当前缓存大小ID寄存器提供有关当前所选缓存的体系结构的信息。1
CLIDR_ELn缓存级别ID寄存器在每个级别上实现的单个或多个高速缓存的类型

缓存层次结构的一致性级别和统一级别。
1,2,3
CNTFRQ_ELn计数器频率寄存器报告系统计时器的频率。0
CNTPCT_ELn计数器物理计数寄存器保持64位的当前计数值。0
CNTKCTL_ELn计数器内核控制寄存器控制从虚拟计数器生成事件流。还控制从EL0访问物理计数器,虚拟计数器,EL1物理计时器和虚拟计时器。1
CNTP_CVAL_ELn计数器物理计时器比较值寄存器保存EL1物理计时器的比较值。0
CPACR_ELn协处理器访问控制寄存器控制对跟踪,浮点和SIMD功能的访问。1
CSSELR_ELn缓存大小选择寄存器通过指定所需的缓存级别和缓存类型(指令或数据缓存),选择当前的缓存大小ID寄存器CCSIDR_EL1。1
CNTP_CTL_ELn计数器物理控制寄存器控制EL1物理计时器的寄存器。0
CTR_ELn缓存类型寄存器有关集成缓存体系结构的信息。0
DCZID_ELn数据缓存零ID寄存器指示数据缓存零根据虚拟地址(DCZVA)系统指令写入字节值为0的块大小。0
ELR_ELn异常链接寄存器保存导致异常的指令的地址。1,2,3
ESR_ELn异常综合特征寄存器包括有关异常原因的信息。1,2,3
FAR_ELn故障地址寄存器保存虚拟错误地址。1,2,3
FPCR浮点控制寄存器控制浮点扩展行为。该寄存器中的字段映射到AArch32 FPSCR中的等效字段。.
FPSR浮点状态寄存器提供浮点系统状态信息。该寄存器中的字段映射到AArch32 FPSCR中的等效字段。.
HCR_ELnHypervisor 配置寄存器控制虚拟化设置,并将异常情况捕获到EL2。2
MAIR_ELn存储器属性间接寄存器在ELn的阶段1翻译的Long-descriptor格式转换表项中,提供对应于可能值的存储器属性编码。1,2,3
MIDR_ELn主ID寄存器代码运行的处理器类型(部件号和版本)。1
MPIDR_ELn多处理器密切关系的寄存器处理器和群集ID,在多核或群集系统中。1
RVBAR_ELn基于地址寄存器的重置向量保存重置向量的基地址,以便发送给ELn的任何异常。1,2,3
SCR_ELn安全配置寄存器控制安全状态和EL3的异常情况。3
SCTLR_ELn系统控制寄存器控制架构功能,例如MMU,缓存和对齐检查。0,1,2,3
SPSR_ELn保存的程序状态寄存器当发生异常时,保持已保存的处理器状态。abt,fiq,irq,und,1,2,3
TCR_ELn转换控制寄存器确定哪个转换表基地寄存器定义了转换表行走(translation table walk)的基地址,该基地址是ELn中,内存访问阶段1转换所需要的。

还控制转换表格式并保存可缓存和可共享的信息。
1,2,3
TPIDR_ELn用户读/写线程ID寄存器为了操作系统管理的目的,提供一个在ELn上执行的软件可以存储线程标识信息的位置。0,1,2,3
TPIDRRO_ELn用户只读线程ID寄存器提供在EL1或更高版本上执行的软件可以存储线程标识信息的位置。为了操作系统管理的目的,在EL0上执行的软件可以看到这些信息。0
TTBR0_ELn转换表基址寄存器0保存转换表0的基地址,以及它占用的内存的信息。这是ELn内,内存访问阶段1转换的转换表之一。1,2,3
TTBR1_ELn转换表基址寄存器1保存转换表1的基地址,以及它占据的存储器的信息。

这是在EL0和EL1内,内存访问阶段1转换的转换表之一
1
VBAR_ELn基于向量的地址寄存器保存异常基地址,以便发送到ELn的任何异常。1,2,3
VTCR_ELn虚拟化转换控制寄存器控制来自非安全EL0和EL1的内存访问阶段2转换所需的转换表步行。还保存访问的可缓存和可共享信息。2
VTTBR_ELn虚拟化转换表基址寄存器保存来自非安全EL0和EL1的内存访问阶段2转换的转换表的基地址。2

原文
https://developer.arm.com/products/architecture/a-profile/docs/100878/latest/system-registers



作者:赵国开
链接:https://www.jianshu.com/p/083a46b7bcfe
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值