pudval_t
static inline void __pud_populate(pud_t *pudp, phys_addr_t pmdp, pudval_t prot)
pudval_t pudval = PUD_TYPE_TABLE | PUD_TABLE_AF;
static inline void __pud_populate(pud_t *pudp, phys_addr_t pmdp, pudval_t prot)
#define PUD_TYPE_TABLE (_AT(pudval_t, 3) << 0)
#define PUD_TYPE_MASK (_AT(pudval_t, 3) << 0)
#define PUD_TYPE_SECT (_AT(pudval_t, 1) << 0)
#define PUD_SECT_RDONLY (_AT(pudval_t, 1) << 7) /* AP[2] */
#define PUD_TABLE_AF (_AT(pudval_t, 1) << 10) /* Ignored if no FEAT_HAFT */
#define PUD_TABLE_PXN (_AT(pudval_t, 1) << 59)
#define PUD_TABLE_UXN (_AT(pudval_t, 1) << 60)
typedef struct { pudval_t pud; } pud_t;
pudval_t mask = PUD_TYPE_MASK & ~PTE_VALID;
pudval_t val = PUD_TYPE_SECT & ~PTE_VALID;
pudval_t pudval = PUD_TYPE_TABLE | PUD_TABLE_UXN | PUD_TABLE_AF;
pudval_t tableprot = PUD_TYPE_TABLE | PUD_TABLE_UXN | PUD_TABLE_AF;
pud[(i + 0) % PTRS_PER_PUD] = (pudval_t)pmd + pgtable_flags;
pud[(i + 1) % PTRS_PER_PUD] = (pudval_t)pmd + pgtable_flags;
pudval_t *pud;
static inline pud_t __pud(pudval_t val)
pudval_t ret;
ret = PVOP_ALT_CALLEE1(pudval_t, pv_ops, mmu.make_pud, val,
static inline pudval_t pud_val(pud_t pud)
return PVOP_ALT_CALLEE1(pudval_t, pv_ops, mmu.pud_val, pud.pud,
return __pud(xchg((pudval_t *)xp, 0));
static inline pud_t pud_set_flags(pud_t pud, pudval_t set)
pudval_t v = native_pud_val(pud);
static inline pud_t pud_clear_flags(pud_t pud, pudval_t clear)
pudval_t v = native_pud_val(pud);
pudval_t v = native_pud_val(pud);
pudval_t v = native_pud_val(pud);
pudval_t val = pud_val(pud), oldval = val;
static inline p4d_t native_make_p4d(pudval_t val)
static inline p4d_t native_make_p4d(pudval_t val)
typedef struct { pudval_t pud; } pud_t;
static inline pudval_t native_pud_val(pud_t pud)
static inline pud_t native_make_pud(pudval_t val)
static inline pudval_t native_pud_val(pud_t pud)
static inline pudval_t pud_pfn_mask(pud_t pud)
static inline pudval_t pud_flags_mask(pud_t pud)
static inline pudval_t pud_flags(pud_t pud)
pud_p = (pudval_t *)((p4d & PTE_PFN_MASK) + __START_KERNEL_map - phys_base);
pud_p = (pudval_t *)early_dynamic_pgts[next_early_pgt++];
*pud_p = (pudval_t)pmd_p - __START_KERNEL_map + phys_base + _KERNPG_TABLE;
pudval_t pud, *pud_p;
pudval_t pud_val = __pa_nodebug(kasan_early_shadow_pmd) | _KERNPG_TABLE;
__visible pudval_t xen_pud_val(pud_t pud)
__visible pud_t xen_make_pud(pudval_t pud)
pudval_t xen_pud_val(pud_t pud);
pud_t xen_make_pud(pudval_t pud);
TRACE_DEFINE_SIZEOF(pudval_t);
__field(pudval_t, pudval)
(int)sizeof(pudval_t) * 2, (unsigned long long)pud_val(native_make_pud(__entry->pudval)),
(int)sizeof(pudval_t) * 2, (unsigned long long)__entry->pudval)
__field(pudval_t, pudval)
(int)sizeof(pudval_t) * 2, (unsigned long long)pgd_val(native_make_pgd(__entry->pudval)),
(int)sizeof(pudval_t) * 2, (unsigned long long)__entry->pudval)