我对linux如何利用ARMv7内存管理单元硬件来实现它的3级页表遍历有点困惑。MMU只有2个寄存器ttbr0和ttbr1 (一个用于内核,另一个用于用户空间)。mmu如何知道linux的多级页表漫游?
谢谢,Hvr
发布于 2015-01-26 23:14:37
如果虚拟地址的高位N位全为零,则转换开始于TTBR0否则TTBR1。N来自于TTBCR。TTBRn寄存器包含第一级表的基址的物理地址。加载第一级表的适当条目,并且该条目的各个比特确定转换是否使用第二级表,如果是,则确定其物理地址是什么。
MMU可以配置为使用短描述符(32位物理地址)或长描述符(40位物理地址)。使用短描述符时,最多只能使用两级转换表。当使用长描述符时,可以有三个级别。
这会忽略阶段2转换(虚拟机管理程序)。所有内容均记录在v7-A&R的ARMARM第B3.3节:http://infocenter.arm.com/help/topic/com.arm.doc.ddi0406c/index.html中
https://stackoverflow.com/questions/28019266
复制相似问题