【发布时间】:2019-08-13 13:48:09
【问题描述】:
在其关于 AArch32 地址转换的部分中,ARMv8 手册描述了当处理器支持这种类型的扩展时,超节的基本物理地址如何达到 40 位大小。我一直无法确定在 AArch32 模式下运行的内核可以在运行时检测是否是这种情况。我是否遗漏了什么,或者这些信息是否只能通过编译内核的具体处理器类型隐式获得?
【问题讨论】:
在其关于 AArch32 地址转换的部分中,ARMv8 手册描述了当处理器支持这种类型的扩展时,超节的基本物理地址如何达到 40 位大小。我一直无法确定在 AArch32 模式下运行的内核可以在运行时检测是否是这种情况。我是否遗漏了什么,或者这些信息是否只能通过编译内核的具体处理器类型隐式获得?
【问题讨论】:
既然 ARMv8 支持 64 位地址(带有物理总线),那么所有 ARMv8-A 都应该激活 LPAE 吗?
对于某些 ARMv7,他们可能/可能没有 LPAE,而 AArch32 文档可能是其中一本手册的副本/粘贴。如果您尝试对更多 ARM cpus 通用,我相信 CP15 ID_MMFR0 具有此信息。其值为 VSMA 字段的 0b0101。它被称为支持长描述符,通常称为LPAE(用于大型物理地址扩展)。
假设您尝试在 AArch32 中使用两级页表并物理寻址 40 位...
ARMv8-A ARM 有关于超级节支持的文档,
0b0000 支持超部分。0b1111 不支持超部分。G5.3 翻译表
长描述符始终支持 40 位地址。
【讨论】: