1

我正在尝试为 Baremetal 中的 Cortex-A v8 64 位设置具有 2 个间接级别的虚拟地址映射。页表级别 2 将包含表描述符,页表级别 3 将包含块条目。

通过查看 64KB 页面的文档:http: //infocenter.arm.com/help/topic/com.arm.doc.den0024a/ch12s03.html#BABIIEFG

我不明白“2 级索引”和“3 级索引”的大小是如何计算的,以及是否需要遵循相同的方式。在此示例中,表 2 有 8192 个条目(因此需要 13 位),表 3 使用 13 位寻址。是否可以更改“2 级索引”的大小?如果我有 3 个间接级别,我如何知道索引的大小?

4

1 回答 1

1

首先,这里是关于ARMv8页表设计的一般描述。

索引位(9 位、11 位和 13 位)对于不同的页面大小(4kb、16kb 和 64kb)是固定的。可以在上面的链接中找到有关位信息的详细信息。如果您使用的是 3 级页表,那么它应该是 16kb 页面颗粒,并且每个级别对应的索引位是 11。

最后,这是我之前发布的解释 AArch64 页表遍历的答案。或许了解 ARM 页表对您有所帮助。

于 2018-06-28T02:02:52.917 回答