ARM MMU和ARM Linux页面表走

时间:2015-01-19 06:48:02

标签: linux arm mmu

我对linux如何利用ARMv7 MMU硬件进行3级页面表行走感到困惑。 MMU只有2个寄存器ttbr0和ttbr1(一个用于内核,另一个用于用户空间)。 mmu如何知道linux的多级页表走?

谢谢, HVR

1 个答案:

答案 0 :(得分:1)

如果虚拟地址的高N位全部为零,则转换从TTBR0其他TTBR1开始。 N来自TTBCRTTBRn寄存器包含第一级表的基础的物理地址。将加载第一级表的相应条目,并且条目的各个位确定转换是否使用第二级表,如果是,则确定其物理地址是什么。

MMU可以配置为使用短描述符(32位物理地址)或长描述符(40位物理地址)。使用简短描述符时,最多只能使用两级翻译表。使用长描述符时,可以有三个级别。

这忽略了第2阶段的翻译(管理程序)。所有内容都记录在ARMARM for v7-A& R部分B3.3中: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0406c/index.html