]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - include/asm-generic/pgtable-nopud.h
regulator: ab8500: Remove AB8505 USB regulator
[mirror_ubuntu-bionic-kernel.git] / include / asm-generic / pgtable-nopud.h
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
1da177e4
LT
2#ifndef _PGTABLE_NOPUD_H
3#define _PGTABLE_NOPUD_H
4
5#ifndef __ASSEMBLY__
6
30ec8426
KS
7#ifdef __ARCH_USE_5LEVEL_HACK
8#include <asm-generic/pgtable-nop4d-hack.h>
9#else
048456dc 10#include <asm-generic/pgtable-nop4d.h>
30ec8426 11
224ab512 12#define __PAGETABLE_PUD_FOLDED 1
1da177e4
LT
13
14/*
048456dc
KS
15 * Having the pud type consist of a p4d gets the size right, and allows
16 * us to conceptually access the p4d entry that this pud is folded into
1da177e4
LT
17 * without casting.
18 */
048456dc 19typedef struct { p4d_t p4d; } pud_t;
1da177e4 20
048456dc 21#define PUD_SHIFT P4D_SHIFT
1da177e4
LT
22#define PTRS_PER_PUD 1
23#define PUD_SIZE (1UL << PUD_SHIFT)
24#define PUD_MASK (~(PUD_SIZE-1))
25
26/*
048456dc 27 * The "p4d_xxx()" functions here are trivial for a folded two-level
1da177e4 28 * setup: the pud is never bad, and a pud always exists (as it's folded
048456dc 29 * into the p4d entry)
1da177e4 30 */
048456dc
KS
31static inline int p4d_none(p4d_t p4d) { return 0; }
32static inline int p4d_bad(p4d_t p4d) { return 0; }
33static inline int p4d_present(p4d_t p4d) { return 1; }
34static inline void p4d_clear(p4d_t *p4d) { }
35#define pud_ERROR(pud) (p4d_ERROR((pud).p4d))
1da177e4 36
048456dc 37#define p4d_populate(mm, p4d, pud) do { } while (0)
1da177e4 38/*
048456dc 39 * (puds are folded into p4ds so this doesn't get actually called,
1da177e4
LT
40 * but the define is needed for a generic inline function.)
41 */
048456dc 42#define set_p4d(p4dptr, p4dval) set_pud((pud_t *)(p4dptr), (pud_t) { p4dval })
1da177e4 43
048456dc 44static inline pud_t *pud_offset(p4d_t *p4d, unsigned long address)
1da177e4 45{
048456dc 46 return (pud_t *)p4d;
1da177e4
LT
47}
48
048456dc
KS
49#define pud_val(x) (p4d_val((x).p4d))
50#define __pud(x) ((pud_t) { __p4d(x) })
1da177e4 51
048456dc
KS
52#define p4d_page(p4d) (pud_page((pud_t){ p4d }))
53#define p4d_page_vaddr(p4d) (pud_page_vaddr((pud_t){ p4d }))
1da177e4
LT
54
55/*
56 * allocating and freeing a pud is trivial: the 1-entry pud is
048456dc 57 * inside the p4d, so has no extra memory associated with it.
1da177e4
LT
58 */
59#define pud_alloc_one(mm, address) NULL
5e541973 60#define pud_free(mm, x) do { } while (0)
9e1b32ca 61#define __pud_free_tlb(tlb, x, a) do { } while (0)
1da177e4
LT
62
63#undef pud_addr_end
64#define pud_addr_end(addr, end) (end)
65
66#endif /* __ASSEMBLY__ */
30ec8426 67#endif /* !__ARCH_USE_5LEVEL_HACK */
1da177e4 68#endif /* _PGTABLE_NOPUD_H */