#define pud_index(addr) (((addr) >> PUD_SHIFT) & (PTRS_PER_PUD - 1))
=>#define PUD_SHIFT ARM64_HW_PGTABLE_LEVEL_SHIFT(1)
=>#define ARM64_HW_PGTABLE_LEVEL_SHIFT(n) ((PAGE_SHIFT - 3) * (4 - (n)) + 3)
=> 29
=>#define PTRS_PER_PUD PTRS_PER_PTE
=>#define PTRS_PER_PTE (1 << (PAGE_SHIFT - 3))
=> 1 << 9
typedef struct { pudval_t pud; } pud_t;
#define pud_page(pud) pfn_to_page(__phys_to_pfn(__pud_to_phys(pud)))
=>#define __pud_to_phys(pud) __pte_to_phys(pud_pte(pud))
=>static inline pte_t pud_pte(pud_t pud)
{
return __pte(pud_val(pud));
}
=>#define __pte_to_phys(pte) (pte_val(pte) & PTE_ADDR_MASK)
=>#define PTE_ADDR_MASK PTE_ADDR_LOW
=>#define PTE_ADDR_LOW (((_AT(pteval_t, 1) << (48 - PAGE_SHIFT)) - 1) << PAGE_SHIFT)
=> ((1 << 36) - 1) << 12
=>#define __phys_to_pfn(paddr) PHYS_PFN(paddr)
=>#define PHYS_PFN(x) ((unsigned long)((x) >> PAGE_SHIFT))
=>#define pfn_to_page __pfn_to_page
=>#define __pfn_to_page(pfn) (vmemmap + (pfn))
=>#define vmemmap ((struct page *)VMEMMAP_START - (memstart_addr >> PAGE_SHIFT))