// 每个 PGD 页表项对应 512 个 PTE
#define PTRS_PER_PTE 512
// 由于只有二级页表,二级页表没有 PMD,所以为1,表示一个 PGD 页表项对应一个 PMD 页表项
#define PTRS_PER_PMD 1
// 一共有 2048 个 PGD 页表项,也就是一级页表项
#define PTRS_PER_PGD 2048
/*
* PMD_SHIFT determines the size of the area a second-level page table can map
* PGDIR_SHIFT determines what a third-level page table entry can map
*/
#define PMD_SHIFT 21
// 一个 PGD 页表项表示的内存地址范围是 21 bits,因为一共 32 bits,共有 11 bits 的PGD数量
#define PGDIR_SHIFT 21
#define PMD_SIZE (1UL << PMD_SHIFT)
#define PMD_MASK (~(PMD_SIZE-1))
#define PGDIR_SIZE (1UL << PGDIR_SHIFT)
#define PGDIR_MASK (~(PGDIR_SIZE-1))