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