慢慢欣赏arm64内核启动8 primary_entry之el2_setup代码第六部分

分析代码

	/* LORegions */
	mrs	x1, id_aa64mmfr1_el1
	ubfx	x0, x1, #ID_AA64MMFR1_LOR_SHIFT, 4
	cbz	x0, 1f
	msr_s	SYS_LORC_EL1, xzr
1:

	/* Stage-2 translation */
	msr	vttbr_el2, xzr

ID_AA64MMFR1_EL1

第2行代码,涉及到arm64 ID_AA64MMFR1_EL1, AArch64 Memory Model Feature Register 1寄存器,参考arm64芯片手册,该寄存器的含义如下:
Provides information about the implemented memory model and memory management support in AArch64 state.
该寄存器提供了EL1异常等级下内存管理的支持

第3行代码,涉及到的 ID_AA64MMFR1_LOR_SHIFT 宏定义如下:

#define ID_AA64MMFR1_LOR_SHIFT		16

对应的寄存器位域LO bits [19:16]的含义如下:
From ARMv8.1:
LORegions. Indicates support for LORegions. Defined values are:
    0b'0000    LORegions not supported.
    0b'0001 LORegions supported.

LORegions

关于LORegions,arm64芯片手册给出了解释:
ARMv8.1 introduces limited ordering regions (LORegions), which allow large systems to perform special load-acquire and store-release instructions that provide order between the memory accesses to a region of the PA map as observed by a set of observers.
意思就是:ARMv8.1引入了有限排序区域(LORegions),允许大型系统执行特殊的加载获取和存储释放指令,以便在一组观察者观察到的物理地址(PA)映射区域中的内存访问之间提供排序。
感觉还是很抽象,想要理解必须详细阅读arm64芯片手册该章节相关的部分。

第4行代码,判断x0寄存器是否为0,如果为0则跳转到第6行

第5行代码,涉及到寄存器 LORC_EL1, LORegion Control (EL1),参考arm64芯片手册,该寄存器的含义如下:
Enables and disables LORegions, and selects the current LORegion descriptor.
该寄存器可以在EL1异常等级下,使能或者禁止LORegions,选择当前的LORegions描述符。
通过查看寄存器位域的的描述,该寄存器最多支持256个描述符。
如果支持LORegions的话,我们将寄存器 LORC_EL1 的值清零,为什么清零不清楚,可能是创造一个干净的环境进行后续初始化吧,等到系统初始化到一定阶段后,用户可以根据差异化的需求重新配置。

VTTBR_EL2

第8行代码是一行注释,意思是二级转换,感觉像是页表转换。

第9行代码涉及到寄存器 VTTBR_EL2, Virtualization Translation Table Base Register,参考arm64芯片手册,该寄存器的含义如下:
Holds the base address of the translation table for the initial lookup for stage 2 of an address translation in the EL1&0 translation regime, and other information for this translation regime.
VTTBR_EL2是虚拟化翻译表基址寄存器,它用于存放虚拟机(VM)在Stage-2地址转换过程中使用的页表的基地址。
在ARMv8-A架构中,虚拟化通常涉及两个阶段的地址转换:Stage-1转换由操作系统控制,而Stage-2转换则由hypervisor控制。
VTTBR_EL2寄存器就是用于在Stage-2转换中指向虚拟机页表的基地址。
该行代码的作用是将该寄存器清零。

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值