1
2#ifndef _4LEVEL_FIXUP_H
3#define _4LEVEL_FIXUP_H
4
5#define __ARCH_HAS_4LEVEL_HACK
6#define __PAGETABLE_PUD_FOLDED 1
7
8#define PUD_SHIFT PGDIR_SHIFT
9#define PUD_SIZE PGDIR_SIZE
10#define PUD_MASK PGDIR_MASK
11#define PTRS_PER_PUD 1
12
13#define pud_t pgd_t
14
15#define pmd_alloc(mm, pud, address) \
16 ((unlikely(pgd_none(*(pud))) && __pmd_alloc(mm, pud, address))? \
17 NULL: pmd_offset(pud, address))
18
19#define pud_offset(pgd, start) (pgd)
20#define pud_none(pud) 0
21#define pud_bad(pud) 0
22#define pud_present(pud) 1
23#define pud_ERROR(pud) do { } while (0)
24#define pud_clear(pud) pgd_clear(pud)
25#define pud_val(pud) pgd_val(pud)
26#define pud_populate(mm, pud, pmd) pgd_populate(mm, pud, pmd)
27#define pud_page(pud) pgd_page(pud)
28#define pud_page_vaddr(pud) pgd_page_vaddr(pud)
29
30#undef pud_free_tlb
31#define pud_free_tlb(tlb, x, addr) do { } while (0)
32#define pud_free(mm, x) do { } while (0)
33#define __pud_free_tlb(tlb, x, addr) do { } while (0)
34
35#undef pud_addr_end
36#define pud_addr_end(addr, end) (end)
37
38#include <asm-generic/5level-fixup.h>
39
40#endif
41