diff options
Diffstat (limited to 'include/asm-x86_64/pgtable.h')
-rw-r--r-- | include/asm-x86_64/pgtable.h | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/include/asm-x86_64/pgtable.h b/include/asm-x86_64/pgtable.h index 5957361782fe..c514deb658a3 100644 --- a/include/asm-x86_64/pgtable.h +++ b/include/asm-x86_64/pgtable.h | |||
@@ -1,6 +1,9 @@ | |||
1 | #ifndef _X86_64_PGTABLE_H | 1 | #ifndef _X86_64_PGTABLE_H |
2 | #define _X86_64_PGTABLE_H | 2 | #define _X86_64_PGTABLE_H |
3 | 3 | ||
4 | #include <asm/const.h> | ||
5 | #ifndef __ASSEMBLY__ | ||
6 | |||
4 | /* | 7 | /* |
5 | * This file contains the functions and defines necessary to modify and use | 8 | * This file contains the functions and defines necessary to modify and use |
6 | * the x86-64 page table tree. | 9 | * the x86-64 page table tree. |
@@ -30,6 +33,8 @@ extern void clear_kernel_mapping(unsigned long addr, unsigned long size); | |||
30 | extern unsigned long empty_zero_page[PAGE_SIZE/sizeof(unsigned long)]; | 33 | extern unsigned long empty_zero_page[PAGE_SIZE/sizeof(unsigned long)]; |
31 | #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) | 34 | #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) |
32 | 35 | ||
36 | #endif /* !__ASSEMBLY__ */ | ||
37 | |||
33 | /* | 38 | /* |
34 | * PGDIR_SHIFT determines what a top-level page table entry can map | 39 | * PGDIR_SHIFT determines what a top-level page table entry can map |
35 | */ | 40 | */ |
@@ -54,6 +59,8 @@ extern unsigned long empty_zero_page[PAGE_SIZE/sizeof(unsigned long)]; | |||
54 | */ | 59 | */ |
55 | #define PTRS_PER_PTE 512 | 60 | #define PTRS_PER_PTE 512 |
56 | 61 | ||
62 | #ifndef __ASSEMBLY__ | ||
63 | |||
57 | #define pte_ERROR(e) \ | 64 | #define pte_ERROR(e) \ |
58 | printk("%s:%d: bad pte %p(%016lx).\n", __FILE__, __LINE__, &(e), pte_val(e)) | 65 | printk("%s:%d: bad pte %p(%016lx).\n", __FILE__, __LINE__, &(e), pte_val(e)) |
59 | #define pmd_ERROR(e) \ | 66 | #define pmd_ERROR(e) \ |
@@ -117,22 +124,23 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long | |||
117 | 124 | ||
118 | #define pte_pgprot(a) (__pgprot((a).pte & ~PHYSICAL_PAGE_MASK)) | 125 | #define pte_pgprot(a) (__pgprot((a).pte & ~PHYSICAL_PAGE_MASK)) |
119 | 126 | ||
120 | #define PMD_SIZE (1UL << PMD_SHIFT) | 127 | #endif /* !__ASSEMBLY__ */ |
128 | |||
129 | #define PMD_SIZE (_AC(1,UL) << PMD_SHIFT) | ||
121 | #define PMD_MASK (~(PMD_SIZE-1)) | 130 | #define PMD_MASK (~(PMD_SIZE-1)) |
122 | #define PUD_SIZE (1UL << PUD_SHIFT) | 131 | #define PUD_SIZE (_AC(1,UL) << PUD_SHIFT) |
123 | #define PUD_MASK (~(PUD_SIZE-1)) | 132 | #define PUD_MASK (~(PUD_SIZE-1)) |
124 | #define PGDIR_SIZE (1UL << PGDIR_SHIFT) | 133 | #define PGDIR_SIZE (_AC(1,UL) << PGDIR_SHIFT) |
125 | #define PGDIR_MASK (~(PGDIR_SIZE-1)) | 134 | #define PGDIR_MASK (~(PGDIR_SIZE-1)) |
126 | 135 | ||
127 | #define USER_PTRS_PER_PGD ((TASK_SIZE-1)/PGDIR_SIZE+1) | 136 | #define USER_PTRS_PER_PGD ((TASK_SIZE-1)/PGDIR_SIZE+1) |
128 | #define FIRST_USER_ADDRESS 0 | 137 | #define FIRST_USER_ADDRESS 0 |
129 | 138 | ||
130 | #ifndef __ASSEMBLY__ | 139 | #define MAXMEM 0x3fffffffffff |
131 | #define MAXMEM 0x3fffffffffffUL | 140 | #define VMALLOC_START 0xffffc20000000000 |
132 | #define VMALLOC_START 0xffffc20000000000UL | 141 | #define VMALLOC_END 0xffffe1ffffffffff |
133 | #define VMALLOC_END 0xffffe1ffffffffffUL | 142 | #define MODULES_VADDR 0xffffffff88000000 |
134 | #define MODULES_VADDR 0xffffffff88000000UL | 143 | #define MODULES_END 0xfffffffffff00000 |
135 | #define MODULES_END 0xfffffffffff00000UL | ||
136 | #define MODULES_LEN (MODULES_END - MODULES_VADDR) | 144 | #define MODULES_LEN (MODULES_END - MODULES_VADDR) |
137 | 145 | ||
138 | #define _PAGE_BIT_PRESENT 0 | 146 | #define _PAGE_BIT_PRESENT 0 |
@@ -158,7 +166,7 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long | |||
158 | #define _PAGE_GLOBAL 0x100 /* Global TLB entry */ | 166 | #define _PAGE_GLOBAL 0x100 /* Global TLB entry */ |
159 | 167 | ||
160 | #define _PAGE_PROTNONE 0x080 /* If not present */ | 168 | #define _PAGE_PROTNONE 0x080 /* If not present */ |
161 | #define _PAGE_NX (1UL<<_PAGE_BIT_NX) | 169 | #define _PAGE_NX (_AC(1,UL)<<_PAGE_BIT_NX) |
162 | 170 | ||
163 | #define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_DIRTY) | 171 | #define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_DIRTY) |
164 | #define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY) | 172 | #define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY) |
@@ -220,6 +228,8 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long | |||
220 | #define __S110 PAGE_SHARED_EXEC | 228 | #define __S110 PAGE_SHARED_EXEC |
221 | #define __S111 PAGE_SHARED_EXEC | 229 | #define __S111 PAGE_SHARED_EXEC |
222 | 230 | ||
231 | #ifndef __ASSEMBLY__ | ||
232 | |||
223 | static inline unsigned long pgd_bad(pgd_t pgd) | 233 | static inline unsigned long pgd_bad(pgd_t pgd) |
224 | { | 234 | { |
225 | return pgd_val(pgd) & ~(PTE_MASK | _KERNPG_TABLE | _PAGE_USER); | 235 | return pgd_val(pgd) & ~(PTE_MASK | _KERNPG_TABLE | _PAGE_USER); |
@@ -405,8 +415,6 @@ extern spinlock_t pgd_lock; | |||
405 | extern struct page *pgd_list; | 415 | extern struct page *pgd_list; |
406 | void vmalloc_sync_all(void); | 416 | void vmalloc_sync_all(void); |
407 | 417 | ||
408 | #endif /* !__ASSEMBLY__ */ | ||
409 | |||
410 | extern int kern_addr_valid(unsigned long addr); | 418 | extern int kern_addr_valid(unsigned long addr); |
411 | 419 | ||
412 | #define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ | 420 | #define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ |
@@ -436,5 +444,6 @@ extern int kern_addr_valid(unsigned long addr); | |||
436 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT | 444 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT |
437 | #define __HAVE_ARCH_PTE_SAME | 445 | #define __HAVE_ARCH_PTE_SAME |
438 | #include <asm-generic/pgtable.h> | 446 | #include <asm-generic/pgtable.h> |
447 | #endif /* !__ASSEMBLY__ */ | ||
439 | 448 | ||
440 | #endif /* _X86_64_PGTABLE_H */ | 449 | #endif /* _X86_64_PGTABLE_H */ |