1

在其关于 AArch32 地址转换的部分中,ARMv8 手册描述了当处理器支持这种类型的扩展时,超部分的基本物理地址如何达到 40 位大小。我一直无法确定在 AArch32 模式下运行的内核可以在运行时检测是否是这种情况。我是否遗漏了什么,或者这些信息是否只能通过编译内核的具体处理器类型隐式获得?

4

1 回答 1

0

由于 ARMv8 支持 64 位地址(带有物理总线),所有 ARMv8-A 都应该激活 LPAE?

对于某些 ARMv7,它们可能/可能没有 LPAE,而 AArch32 文档可能是其中一本手册的副本/粘贴。如果您尝试对更多 ARM cpus 通用,我相信 CP15 ID_MMFR0 具有此信息。其值为 VSMA 字段的 0b0101。它被称为对长描述符的支持, 通常称为 LPAE(用于大型物理地址扩展)。

假设您尝试在 AArch32 中使用两级页表并物理寻址 40 位...

ARMv8-A ARM 有关于超级部分支持的文档,

  • ID_MMFR3_EL1 - 位 31:28
  • 0b0000支持超截面。
  • 0b1111不支持超截面。

G5.3 翻译表

  • 短描述符格式
  • 最多 40 位的输出地址。
  • 通过使用超节支持超过 32 位的 PA ,粒度为 16MB。

Long 描述符始终支持 40 位地址。

于 2019-08-14T21:09:36.350 回答