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]
。其余映射保持不变。
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]
。其余映射保持不变。