1#ifndef _ASM_X86_PGTABLE_64_DEFS_H 2#define _ASM_X86_PGTABLE_64_DEFS_H 3 4#ifndef __ASSEMBLY__ 5#include <linux/types.h> 6 7/* 8 * These are used to make use of C type-checking.. 9 */ 10typedef unsigned long pteval_t; 11typedef unsigned long pmdval_t; 12typedef unsigned long pudval_t; 13typedef unsigned long pgdval_t; 14typedef unsigned long pgprotval_t; 15 16typedef struct { pteval_t pte; } pte_t; 17 18#endif /* !__ASSEMBLY__ */ 19 20#define SHARED_KERNEL_PMD 0 21#define PAGETABLE_LEVELS 4 22 23/* 24 * PGDIR_SHIFT determines what a top-level page table entry can map 25 */ 26#define PGDIR_SHIFT 39 27#define PTRS_PER_PGD 512 28 29/* 30 * 3rd level page 31 */ 32#define PUD_SHIFT 30 33#define PTRS_PER_PUD 512 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 47#define PMD_SIZE (_AC(1, UL) << PMD_SHIFT) 48#define PMD_MASK (~(PMD_SIZE - 1)) 49#define PUD_SIZE (_AC(1, UL) << PUD_SHIFT) 50#define PUD_MASK (~(PUD_SIZE - 1)) 51#define PGDIR_SIZE (_AC(1, UL) << PGDIR_SHIFT) 52#define PGDIR_MASK (~(PGDIR_SIZE - 1)) 53 54/* See Documentation/x86/x86_64/mm.txt for a description of the memory map. */ 55#define MAXMEM _AC(__AC(1, UL) << MAX_PHYSMEM_BITS, UL) 56#define VMALLOC_START _AC(0xffffc90000000000, UL) 57#define VMALLOC_END _AC(0xffffe8ffffffffff, UL) 58#define VMEMMAP_START _AC(0xffffea0000000000, UL) 59#define MODULES_VADDR _AC(0xffffffffa0000000, UL) 60#define MODULES_END _AC(0xffffffffff000000, UL) 61#define MODULES_LEN (MODULES_END - MODULES_VADDR) 62 63#endif /* _ASM_X86_PGTABLE_64_DEFS_H */ 64