在ARMv7中,TTBR0和TTBR1中使用的地址是物理地址还是虚拟地址

在ARMv7中,TTBR0和TTBR1中使用的地址是物理地址还是虚拟地址,arm,armv7,mmu,Arm,Armv7,Mmu,我一直在看B3节中v7-A和v7-R的ARM体系结构参考手册,我不知道TTBR0和TTBR1寄存器中使用的地址应该是虚拟地址还是物理地址 身体检查是最有意义的,但我想确切地知道 那么,这个地址应该是物理地址还是虚拟地址 是否需要将页表位置映射为标识地址(PA==VA)?假设它是一个虚拟地址 CPU向虚拟地址发出事务。为了翻译它,MMU需要进行桌面漫游。为此,它需要知道要在总线上寻址的RAM位,因此它会在基址寄存器中查找。很好,现在它有了虚拟基址,它只需要将其转换为物理地址,就可以知道在总线上要寻

我一直在看B3节中v7-A和v7-R的ARM体系结构参考手册,我不知道TTBR0和TTBR1寄存器中使用的地址应该是虚拟地址还是物理地址

身体检查是最有意义的,但我想确切地知道

那么,这个地址应该是物理地址还是虚拟地址


是否需要将页表位置映射为标识地址(PA==VA)?

假设它是一个虚拟地址

CPU向虚拟地址发出事务。为了翻译它,MMU需要进行桌面漫游。为此,它需要知道要在总线上寻址的RAM位,因此它会在基址寄存器中查找。很好,现在它有了虚拟基址,它只需要将其转换为物理地址,就可以知道在总线上要寻址的RAM位,所以它需要进行一次桌面漫游。为此,它需要。。。等等等等

简言之,是的,它们绝对是物理地址。TTBRn在LPAE实现上是64位的这一事实也是一个线索*

一旦设置了页表并且打开了MMU,就根本不需要对它们进行映射,更不用说在任何特定的关系中了——如果数据物理上存在于RAM中,MMU会非常高兴。如果CPU正在更新表,它只需要将RAM映射到它的地址空间中,其余时间它们只是在浪费地址空间


*…当然,当涉及到虚拟化扩展时,这完全是一个谎言;)在这种情况下,它们是中间物理地址,完全取决于第2阶段翻译的突发奇想。适用于上述情况。有趣。

身体。在这方面,它与ARMv5保持不变。

根据代码,pgd的物理地址写入TTBR

“上述适用”是什么意思?这是否意味着您需要在第2阶段进行从IPA到PA的1:1映射?
#define cpu_switch_mm(pgd,mm) cpu_do_switch_mm(virt_to_phys(pgd),mm)