u-boot或者uefi启动kernel的时候,默认MMU是关闭的,所以这个时候kernel实际运行的地址就是物理地址。 为了前期尽早打开MMU和cache,kernel需要建立MMU的页表,这个时候的页表是1:1映射,即VA = PA。
分配
这个页表是在Link 脚本中进行分配 …
在Arm64的linux kernel中,有如下定义:
/* Initial memory map size */
#ifdef CONFIG_ARM64_4K_PAGES
#define SWAPPER_BLOCK_SHIFT PMD_SHIFT
#define SWAPPER_BLOCK_SIZE PMD_SIZE
#define SWAPPER_TABLE_SHIFT PUD_SHIFT
#else
#define SWAPPER_BLOCK_SHIFT PAGE_SHIFT
#define SWAPPER_BLOCK_SIZE PAGE_SIZE
#define SWAPPER_TABLE_SHIFT PMD_SHIFT
#endif
在第一次建立1:1 mapping的页表的时候,Linux kernel 除了建立_text …
read more