zzz22333 (@a909204013) 在 奔跑吧Linux内核阅读记录——章2 ARM64在Linux下的实现 中发帖
什么时候使用TTBR0_ELx,什么时候使用TTBR1_ELx?
在AArch64 架构中,因为地址总线位宽最多支持48 位,所以VA 被划分为两个空间,每个
空间最多支持256TB。
低位的虚拟地址空间位于0x0000 0000 0000 0000 到0x0000 FFFF FFFF FFFF。如果虚
拟地址的最高位等于 0,就使用这个虚拟地址空间,并且使用TTBR0_ELx 来存放页表
的基地址。
高位的虚拟地址空间位于0xFFFF 0000 0000 0000 到0xFFFF FFFF FFFF FFFF。如果虚
拟地址的最高位等于 1,就使用这个虚拟地址空间,并且使用TTBR1_ELx 来存放页表
的基地址。
TTBR0_ELx
用户空间地址转换:
用户态程序访问用户虚拟地址时(VA[63]=0),MMU自动选择 TTBR0_ELx 中的页表基地址。
...