MMU 页面 table 索引的描述符大小

MMU page table descriptor size of indexes

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

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

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

首先,这里有一个general description关于ARMv8的页面table设计。

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

最后,这里是我之前发帖解释AArch64页面table走。也许对你理解 ARM 页面有帮助 table.