blob: 1bd5876c864949f4fd1ac3a9cd100ac64893f3ba [file] [log] [blame]
H. Peter Anvin1965aae2008-10-22 22:26:29 -07001#ifndef _ASM_X86_PGTABLE_3LEVEL_DEFS_H
2#define _ASM_X86_PGTABLE_3LEVEL_DEFS_H
Linus Torvalds1da177e2005-04-16 15:20:36 -07003
Jeremy Fitzhardinge54321d92009-02-11 10:20:05 -08004#ifndef __ASSEMBLY__
5#include <linux/types.h>
6
7typedef u64 pteval_t;
8typedef u64 pmdval_t;
9typedef u64 pudval_t;
10typedef u64 pgdval_t;
11typedef u64 pgprotval_t;
12
13typedef union {
14 struct {
15 unsigned long pte_low, pte_high;
16 };
17 pteval_t pte;
18} pte_t;
19#endif /* !__ASSEMBLY__ */
20
Jeremy Fitzhardinge5311ab62007-05-02 19:27:13 +020021#ifdef CONFIG_PARAVIRT
Jeremy Fitzhardinge93b1eab2007-10-16 11:51:29 -070022#define SHARED_KERNEL_PMD (pv_info.shared_kernel_pmd)
Jeremy Fitzhardinge5311ab62007-05-02 19:27:13 +020023#else
24#define SHARED_KERNEL_PMD 1
25#endif
26
Jeremy Fitzhardinge9b3651c2009-02-13 11:01:54 -080027#define PAGETABLE_LEVELS 3
28
Linus Torvalds1da177e2005-04-16 15:20:36 -070029/*
30 * PGDIR_SHIFT determines what a top-level page table entry can map
31 */
32#define PGDIR_SHIFT 30
33#define PTRS_PER_PGD 4
34
35/*
36 * PMD_SHIFT determines the size of the area a middle-level
37 * page table can map
38 */
39#define PMD_SHIFT 21
40#define PTRS_PER_PMD 512
41
42/*
43 * entries per page directory level
44 */
45#define PTRS_PER_PTE 512
46
Jeremy Fitzhardinge54321d92009-02-11 10:20:05 -080047
H. Peter Anvin1965aae2008-10-22 22:26:29 -070048#endif /* _ASM_X86_PGTABLE_3LEVEL_DEFS_H */