aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-x86/pgtable_64.h
diff options
context:
space:
mode:
authorJeremy Fitzhardinge <jeremy@goop.org>2008-01-30 07:32:55 -0500
committerIngo Molnar <mingo@elte.hu>2008-01-30 07:32:55 -0500
commit6c3866558213ff706d8331053386915371ad63ec (patch)
tree7c7d4b56c0544abbc2256f078d71a78d3ebfb84d /include/asm-x86/pgtable_64.h
parent82bc03fc158e28c90d7ed9919410776039cb4e14 (diff)
x86: move all asm/pgtable constants into one place
32 and 64-bit use the same flags for pagetable entries, so make them all common. [ mingo@elte.hu: fixes ] Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/asm-x86/pgtable_64.h')
-rw-r--r--include/asm-x86/pgtable_64.h91
1 files changed, 0 insertions, 91 deletions
diff --git a/include/asm-x86/pgtable_64.h b/include/asm-x86/pgtable_64.h
index 9c9cddf5138b..93eb4df2ec11 100644
--- a/include/asm-x86/pgtable_64.h
+++ b/include/asm-x86/pgtable_64.h
@@ -131,8 +131,6 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long
131#define PGDIR_SIZE (_AC(1,UL) << PGDIR_SHIFT) 131#define PGDIR_SIZE (_AC(1,UL) << PGDIR_SHIFT)
132#define PGDIR_MASK (~(PGDIR_SIZE-1)) 132#define PGDIR_MASK (~(PGDIR_SIZE-1))
133 133
134#define USER_PTRS_PER_PGD ((TASK_SIZE-1)/PGDIR_SIZE+1)
135#define FIRST_USER_ADDRESS 0
136 134
137#define MAXMEM _AC(0x3fffffffffff, UL) 135#define MAXMEM _AC(0x3fffffffffff, UL)
138#define VMALLOC_START _AC(0xffffc20000000000, UL) 136#define VMALLOC_START _AC(0xffffc20000000000, UL)
@@ -142,95 +140,6 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long
142#define MODULES_END _AC(0xfffffffffff00000, UL) 140#define MODULES_END _AC(0xfffffffffff00000, UL)
143#define MODULES_LEN (MODULES_END - MODULES_VADDR) 141#define MODULES_LEN (MODULES_END - MODULES_VADDR)
144 142
145#define _PAGE_BIT_PRESENT 0
146#define _PAGE_BIT_RW 1
147#define _PAGE_BIT_USER 2
148#define _PAGE_BIT_PWT 3
149#define _PAGE_BIT_PCD 4
150#define _PAGE_BIT_ACCESSED 5
151#define _PAGE_BIT_DIRTY 6
152#define _PAGE_BIT_PSE 7 /* 4 MB (or 2MB) page */
153#define _PAGE_BIT_FILE 6
154#define _PAGE_BIT_GLOBAL 8 /* Global TLB entry PPro+ */
155#define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */
156
157#define _PAGE_PRESENT (_AC(1, UL)<<_PAGE_BIT_PRESENT)
158#define _PAGE_RW (_AC(1, UL)<<_PAGE_BIT_RW)
159#define _PAGE_USER (_AC(1, UL)<<_PAGE_BIT_USER)
160#define _PAGE_PWT (_AC(1, UL)<<_PAGE_BIT_PWT)
161#define _PAGE_PCD (_AC(1, UL)<<_PAGE_BIT_PCD)
162#define _PAGE_ACCESSED (_AC(1, UL)<<_PAGE_BIT_ACCESSED)
163#define _PAGE_DIRTY (_AC(1, UL)<<_PAGE_BIT_DIRTY)
164/* 2MB page */
165#define _PAGE_PSE (_AC(1, UL)<<_PAGE_BIT_PSE)
166/* nonlinear file mapping, saved PTE; unset:swap */
167#define _PAGE_FILE (_AC(1, UL)<<_PAGE_BIT_FILE)
168/* Global TLB entry */
169#define _PAGE_GLOBAL (_AC(1, UL)<<_PAGE_BIT_GLOBAL)
170
171#define _PAGE_PROTNONE 0x080 /* If not present */
172#define _PAGE_NX (_AC(1, UL)<<_PAGE_BIT_NX)
173
174#define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_DIRTY)
175#define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY)
176
177#define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
178
179#define PAGE_NONE __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED)
180#define PAGE_SHARED __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
181#define PAGE_SHARED_EXEC __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED)
182#define PAGE_COPY_NOEXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
183#define PAGE_COPY PAGE_COPY_NOEXEC
184#define PAGE_COPY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
185#define PAGE_READONLY __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
186#define PAGE_READONLY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
187#define __PAGE_KERNEL \
188 (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_NX)
189#define __PAGE_KERNEL_EXEC \
190 (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
191#define __PAGE_KERNEL_NOCACHE \
192 (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_PCD | _PAGE_PWT | _PAGE_ACCESSED | _PAGE_NX)
193#define __PAGE_KERNEL_RO \
194 (_PAGE_PRESENT | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_NX)
195#define __PAGE_KERNEL_VSYSCALL \
196 (_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
197#define __PAGE_KERNEL_VSYSCALL_NOCACHE \
198 (_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_PCD | _PAGE_PWT)
199#define __PAGE_KERNEL_LARGE \
200 (__PAGE_KERNEL | _PAGE_PSE)
201#define __PAGE_KERNEL_LARGE_EXEC \
202 (__PAGE_KERNEL_EXEC | _PAGE_PSE)
203
204#define MAKE_GLOBAL(x) __pgprot((x) | _PAGE_GLOBAL)
205
206#define PAGE_KERNEL MAKE_GLOBAL(__PAGE_KERNEL)
207#define PAGE_KERNEL_EXEC MAKE_GLOBAL(__PAGE_KERNEL_EXEC)
208#define PAGE_KERNEL_RO MAKE_GLOBAL(__PAGE_KERNEL_RO)
209#define PAGE_KERNEL_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_NOCACHE)
210#define PAGE_KERNEL_VSYSCALL32 __pgprot(__PAGE_KERNEL_VSYSCALL)
211#define PAGE_KERNEL_VSYSCALL MAKE_GLOBAL(__PAGE_KERNEL_VSYSCALL)
212#define PAGE_KERNEL_LARGE MAKE_GLOBAL(__PAGE_KERNEL_LARGE)
213#define PAGE_KERNEL_VSYSCALL_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_VSYSCALL_NOCACHE)
214
215/* xwr */
216#define __P000 PAGE_NONE
217#define __P001 PAGE_READONLY
218#define __P010 PAGE_COPY
219#define __P011 PAGE_COPY
220#define __P100 PAGE_READONLY_EXEC
221#define __P101 PAGE_READONLY_EXEC
222#define __P110 PAGE_COPY_EXEC
223#define __P111 PAGE_COPY_EXEC
224
225#define __S000 PAGE_NONE
226#define __S001 PAGE_READONLY
227#define __S010 PAGE_SHARED
228#define __S011 PAGE_SHARED
229#define __S100 PAGE_READONLY_EXEC
230#define __S101 PAGE_READONLY_EXEC
231#define __S110 PAGE_SHARED_EXEC
232#define __S111 PAGE_SHARED_EXEC
233
234#ifndef __ASSEMBLY__ 143#ifndef __ASSEMBLY__
235 144
236static inline unsigned long pgd_bad(pgd_t pgd) 145static inline unsigned long pgd_bad(pgd_t pgd)