diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2008-10-13 12:13:56 -0400 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2008-10-13 12:13:56 -0400 |
commit | e758936e02700ff88a0b08b722a3847b95283ef2 (patch) | |
tree | 50c919bef1b459a778b85159d5929de95b6c4a01 /include/asm-x86/pgtable.h | |
parent | 239cfbde1f5843c4a24199f117d5f67f637d72d5 (diff) | |
parent | 4480f15b3306f43bbb0310d461142b4e897ca45b (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts:
include/asm-x86/statfs.h
Diffstat (limited to 'include/asm-x86/pgtable.h')
-rw-r--r-- | include/asm-x86/pgtable.h | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h index 04caa2f544df..ed932453ef26 100644 --- a/include/asm-x86/pgtable.h +++ b/include/asm-x86/pgtable.h | |||
@@ -1,5 +1,5 @@ | |||
1 | #ifndef _ASM_X86_PGTABLE_H | 1 | #ifndef ASM_X86__PGTABLE_H |
2 | #define _ASM_X86_PGTABLE_H | 2 | #define ASM_X86__PGTABLE_H |
3 | 3 | ||
4 | #define FIRST_USER_ADDRESS 0 | 4 | #define FIRST_USER_ADDRESS 0 |
5 | 5 | ||
@@ -19,6 +19,7 @@ | |||
19 | #define _PAGE_BIT_UNUSED3 11 | 19 | #define _PAGE_BIT_UNUSED3 11 |
20 | #define _PAGE_BIT_PAT_LARGE 12 /* On 2MB or 1GB pages */ | 20 | #define _PAGE_BIT_PAT_LARGE 12 /* On 2MB or 1GB pages */ |
21 | #define _PAGE_BIT_SPECIAL _PAGE_BIT_UNUSED1 | 21 | #define _PAGE_BIT_SPECIAL _PAGE_BIT_UNUSED1 |
22 | #define _PAGE_BIT_CPA_TEST _PAGE_BIT_UNUSED1 | ||
22 | #define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */ | 23 | #define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */ |
23 | 24 | ||
24 | #define _PAGE_PRESENT (_AT(pteval_t, 1) << _PAGE_BIT_PRESENT) | 25 | #define _PAGE_PRESENT (_AT(pteval_t, 1) << _PAGE_BIT_PRESENT) |
@@ -36,6 +37,7 @@ | |||
36 | #define _PAGE_PAT (_AT(pteval_t, 1) << _PAGE_BIT_PAT) | 37 | #define _PAGE_PAT (_AT(pteval_t, 1) << _PAGE_BIT_PAT) |
37 | #define _PAGE_PAT_LARGE (_AT(pteval_t, 1) << _PAGE_BIT_PAT_LARGE) | 38 | #define _PAGE_PAT_LARGE (_AT(pteval_t, 1) << _PAGE_BIT_PAT_LARGE) |
38 | #define _PAGE_SPECIAL (_AT(pteval_t, 1) << _PAGE_BIT_SPECIAL) | 39 | #define _PAGE_SPECIAL (_AT(pteval_t, 1) << _PAGE_BIT_SPECIAL) |
40 | #define _PAGE_CPA_TEST (_AT(pteval_t, 1) << _PAGE_BIT_CPA_TEST) | ||
39 | #define __HAVE_ARCH_PTE_SPECIAL | 41 | #define __HAVE_ARCH_PTE_SPECIAL |
40 | 42 | ||
41 | #if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE) | 43 | #if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE) |
@@ -130,6 +132,17 @@ | |||
130 | #define __S110 PAGE_SHARED_EXEC | 132 | #define __S110 PAGE_SHARED_EXEC |
131 | #define __S111 PAGE_SHARED_EXEC | 133 | #define __S111 PAGE_SHARED_EXEC |
132 | 134 | ||
135 | /* | ||
136 | * early identity mapping pte attrib macros. | ||
137 | */ | ||
138 | #ifdef CONFIG_X86_64 | ||
139 | #define __PAGE_KERNEL_IDENT_LARGE_EXEC __PAGE_KERNEL_LARGE_EXEC | ||
140 | #else | ||
141 | #define PTE_IDENT_ATTR 0x003 /* PRESENT+RW */ | ||
142 | #define PDE_IDENT_ATTR 0x063 /* PRESENT+RW+DIRTY+ACCESSED */ | ||
143 | #define PGD_IDENT_ATTR 0x001 /* PRESENT (no other attributes) */ | ||
144 | #endif | ||
145 | |||
133 | #ifndef __ASSEMBLY__ | 146 | #ifndef __ASSEMBLY__ |
134 | 147 | ||
135 | /* | 148 | /* |
@@ -186,6 +199,13 @@ static inline int pte_special(pte_t pte) | |||
186 | return pte_val(pte) & _PAGE_SPECIAL; | 199 | return pte_val(pte) & _PAGE_SPECIAL; |
187 | } | 200 | } |
188 | 201 | ||
202 | static inline unsigned long pte_pfn(pte_t pte) | ||
203 | { | ||
204 | return (pte_val(pte) & PTE_PFN_MASK) >> PAGE_SHIFT; | ||
205 | } | ||
206 | |||
207 | #define pte_page(pte) pfn_to_page(pte_pfn(pte)) | ||
208 | |||
189 | static inline int pmd_large(pmd_t pte) | 209 | static inline int pmd_large(pmd_t pte) |
190 | { | 210 | { |
191 | return (pmd_val(pte) & (_PAGE_PSE | _PAGE_PRESENT)) == | 211 | return (pmd_val(pte) & (_PAGE_PSE | _PAGE_PRESENT)) == |
@@ -313,6 +333,8 @@ static inline void native_pagetable_setup_start(pgd_t *base) {} | |||
313 | static inline void native_pagetable_setup_done(pgd_t *base) {} | 333 | static inline void native_pagetable_setup_done(pgd_t *base) {} |
314 | #endif | 334 | #endif |
315 | 335 | ||
336 | extern int arch_report_meminfo(char *page); | ||
337 | |||
316 | #ifdef CONFIG_PARAVIRT | 338 | #ifdef CONFIG_PARAVIRT |
317 | #include <asm/paravirt.h> | 339 | #include <asm/paravirt.h> |
318 | #else /* !CONFIG_PARAVIRT */ | 340 | #else /* !CONFIG_PARAVIRT */ |
@@ -521,4 +543,4 @@ static inline void clone_pgd_range(pgd_t *dst, pgd_t *src, int count) | |||
521 | #include <asm-generic/pgtable.h> | 543 | #include <asm-generic/pgtable.h> |
522 | #endif /* __ASSEMBLY__ */ | 544 | #endif /* __ASSEMBLY__ */ |
523 | 545 | ||
524 | #endif /* _ASM_X86_PGTABLE_H */ | 546 | #endif /* ASM_X86__PGTABLE_H */ |