linux 虚拟地址中的页 table 位(4 级分页)

Page table bits in linux virtual address (4-level paging)

armV8 CPU 具有 4 级分页的 64 位虚拟地址中的 pgd、pmd pte 和页移位是什么?

我需要此信息来调试手头的问题。

这里的文档解释的很清楚 https://www.kernel.org/doc/Documentation/arm64/memory.txt

翻译 table 查找 4KB 页面:

+--------+--------+--------+--------+--------+--------+--------+--------+
|63    56|55    48|47    40|39    32|31    24|23    16|15     8|7      0|
+--------+--------+--------+--------+--------+--------+--------+--------+
 |                 |         |         |         |         |
 |                 |         |         |         |         v
 |                 |         |         |         |   [11:0]  in-page offset
 |                 |         |         |         +-> [20:12] L3 index
 |                 |         |         +-----------> [29:21] L2 index
 |                 |         +---------------------> [38:30] L1 index
 |                 +-------------------------------> [47:39] L0 index
 +-------------------------------------------------> [63] TTBR0/1

L0 - PGD,L1 - PUD,L2 - PMD,L3 - PTE

Aarch64 仅使用 0-39 位(3 级分页)。因此对于 aarch 系统,PGD(L0) = PUD(L1) = [38:30]。其余映射保持不变。