Greg Kroah-Hartman | b244131 | 2017-11-01 15:07:57 +0100 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
Kirill A. Shutemov | 505a60e | 2017-03-09 17:24:03 +0300 | [diff] [blame] | 2 | #ifndef _5LEVEL_FIXUP_H |
| 3 | #define _5LEVEL_FIXUP_H |
| 4 | |
| 5 | #define __ARCH_HAS_5LEVEL_HACK |
| 6 | #define __PAGETABLE_P4D_FOLDED |
| 7 | |
| 8 | #define P4D_SHIFT PGDIR_SHIFT |
| 9 | #define P4D_SIZE PGDIR_SIZE |
| 10 | #define P4D_MASK PGDIR_MASK |
| 11 | #define PTRS_PER_P4D 1 |
| 12 | |
| 13 | #define p4d_t pgd_t |
| 14 | |
| 15 | #define pud_alloc(mm, p4d, address) \ |
| 16 | ((unlikely(pgd_none(*(p4d))) && __pud_alloc(mm, p4d, address)) ? \ |
| 17 | NULL : pud_offset(p4d, address)) |
| 18 | |
| 19 | #define p4d_alloc(mm, pgd, address) (pgd) |
| 20 | #define p4d_offset(pgd, start) (pgd) |
| 21 | #define p4d_none(p4d) 0 |
| 22 | #define p4d_bad(p4d) 0 |
| 23 | #define p4d_present(p4d) 1 |
| 24 | #define p4d_ERROR(p4d) do { } while (0) |
| 25 | #define p4d_clear(p4d) pgd_clear(p4d) |
| 26 | #define p4d_val(p4d) pgd_val(p4d) |
| 27 | #define p4d_populate(mm, p4d, pud) pgd_populate(mm, p4d, pud) |
| 28 | #define p4d_page(p4d) pgd_page(p4d) |
| 29 | #define p4d_page_vaddr(p4d) pgd_page_vaddr(p4d) |
| 30 | |
| 31 | #define __p4d(x) __pgd(x) |
| 32 | #define set_p4d(p4dp, p4d) set_pgd(p4dp, p4d) |
| 33 | |
| 34 | #undef p4d_free_tlb |
| 35 | #define p4d_free_tlb(tlb, x, addr) do { } while (0) |
| 36 | #define p4d_free(mm, x) do { } while (0) |
| 37 | #define __p4d_free_tlb(tlb, x, addr) do { } while (0) |
| 38 | |
| 39 | #undef p4d_addr_end |
| 40 | #define p4d_addr_end(addr, end) (end) |
| 41 | |
| 42 | #endif |