【问题标题】:Page table bits in linux virtual address (4-level paging)linux虚拟地址中的页表位(4级分页)
【发布时间】:2015-11-26 06:30:57
【问题描述】:

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

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

【问题讨论】:

  • 如果你在调试内核,你肯定有the kernel source to hand
  • 是的@Notlikethat。我有它。我试着自己看。但定义并不直接。由于这些变量依赖于其他各种变量,然后将它们向左或向右移动,因此无法直接得出结论。因此,如果有人已经有答案的问题。
  • @Notlikethat arm64/memory.txt 清楚地定义了它。我现在明白了。在下面发布相同的内容。谢谢。

标签: memory-management linux-kernel paging arm64


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2016-01-13
    • 2021-09-04
    • 2019-02-28
    • 2010-12-12
    • 2021-07-25
    • 1970-01-01
    相关资源
    最近更新 更多