Arm MMU页表描述符索引的大小

Arm MMU页表描述符索引的大小,arm,arm64,cortex-a,armv8,Arm,Arm64,Cortex A,Armv8,我正在尝试为Cortex设置一个虚拟地址映射,该映射具有两个级别的间接寻址—一个裸金属v8 64位。页面表级别2将包含表描述符,页面表级别3将包含块条目 通过查看64KB页面的文档: 我不明白“二级指数”和“三级指数”的大小是如何计算的,我是否需要遵循同样的方法。 在本例中,表2有8192个条目(因此需要13位),表3使用13位寻址。 是否可以更改“二级索引”的大小?如果我有3级间接寻址,如何知道索引的大小?首先,这里是一个关于ARMv8页面表设计的示例 索引位(9位、11位和13位)对于不同

我正在尝试为Cortex设置一个虚拟地址映射,该映射具有两个级别的间接寻址—一个裸金属v8 64位。页面表级别2将包含表描述符,页面表级别3将包含块条目

通过查看64KB页面的文档:

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

首先,这里是一个关于ARMv8页面表设计的示例

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

最后,这里是我之前发布的解释AArch64页表格行走的文章。也许这有助于您理解ARM page表格