1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _ASM_X86_PGTABLE_2LEVEL_DEFS_H
3#define _ASM_X86_PGTABLE_2LEVEL_DEFS_H
4
5#ifndef __ASSEMBLY__
6#include <linux/types.h>
7
8typedef unsigned long pteval_t;
9typedef unsigned long pmdval_t;
10typedef unsigned long pudval_t;
11typedef unsigned long p4dval_t;
12typedef unsigned long pgdval_t;
13typedef unsigned long pgprotval_t;
14
15typedef union {
16 pteval_t pte;
17 pteval_t pte_low;
18} pte_t;
19#endif /* !__ASSEMBLY__ */
20
21#define SHARED_KERNEL_PMD 0
22
23#define ARCH_PAGE_TABLE_SYNC_MASK PGTBL_PMD_MODIFIED
24
25/*
26 * traditional i386 two-level paging structure:
27 */
28
29#define PGDIR_SHIFT 22
30#define PTRS_PER_PGD 1024
31
32
33/*
34 * the i386 is two-level, so we don't really have any
35 * PMD directory physically.
36 */
37
38#define PTRS_PER_PTE 1024
39
40/* This covers all VMSPLIT_* and VMSPLIT_*_OPT variants */
41#define PGD_KERNEL_START (CONFIG_PAGE_OFFSET >> PGDIR_SHIFT)
42
43#endif /* _ASM_X86_PGTABLE_2LEVEL_DEFS_H */
44

source code of linux/arch/x86/include/asm/pgtable-2level_types.h