我对Linux如何利用ARMV7MMU硬件进行三级页表遍历有点困惑。mmu只有两个寄存器ttbr0和ttbr1(一个用于内核,另一个用于用户空间)。mmu怎么知道linux的多级页表行走?
谢谢,
高压整流器

最佳答案

如果虚拟地址的高位均为零,则转换从NelseTTBR0开始。TTBR1来自NTTBCR寄存器包含一级表基的物理地址。加载第一级表的适当条目,条目的各种位确定翻译是否使用第二级表,如果使用,则确定其物理地址。
mmu可以配置为使用短描述符(32位物理地址)或长描述符(40位物理地址)。使用短描述符时,最多只能使用两级翻译表。当使用长描述符时,可以有三个级别。
这将忽略阶段2转换(管理程序)。所有这些都记录在V7-A&R第B3.3节的ARMARMAM中:
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0406c/index.html

关于linux - ARM MMU和ARM Linux页面表遍历,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28019266/

10-16 20:44