aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/asm-x86/pgtable_64.h24
1 files changed, 15 insertions, 9 deletions
diff --git a/include/asm-x86/pgtable_64.h b/include/asm-x86/pgtable_64.h
index 93eb4df2ec11..3a0588088480 100644
--- a/include/asm-x86/pgtable_64.h
+++ b/include/asm-x86/pgtable_64.h
@@ -179,21 +179,27 @@ static inline pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot)
179 * Undefined behaviour if not.. 179 * Undefined behaviour if not..
180 */ 180 */
181#define __LARGE_PTE (_PAGE_PSE|_PAGE_PRESENT) 181#define __LARGE_PTE (_PAGE_PSE|_PAGE_PRESENT)
182
182static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; } 183static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; }
183static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; } 184static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; }
184static inline int pte_write(pte_t pte) { return pte_val(pte) & _PAGE_RW; } 185static inline int pte_write(pte_t pte) { return pte_val(pte) & _PAGE_RW; }
185static inline int pte_file(pte_t pte) { return pte_val(pte) & _PAGE_FILE; } 186static inline int pte_file(pte_t pte) { return pte_val(pte) & _PAGE_FILE; }
186static inline int pte_huge(pte_t pte) { return pte_val(pte) & _PAGE_PSE; } 187static inline int pte_huge(pte_t pte) { return pte_val(pte) & _PAGE_PSE; }
187 188
188static inline pte_t pte_mkclean(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_DIRTY)); return pte; } 189static inline int pmd_large(pmd_t pte) {
189static inline pte_t pte_mkold(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_ACCESSED)); return pte; } 190 return (pmd_val(pte) & (_PAGE_PSE|_PAGE_PRESENT)) ==
190static inline pte_t pte_wrprotect(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_RW)); return pte; } 191 (_PAGE_PSE|_PAGE_PRESENT);
191static inline pte_t pte_mkexec(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_NX)); return pte; } 192}
192static inline pte_t pte_mkdirty(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) | _PAGE_DIRTY)); return pte; } 193
193static inline pte_t pte_mkyoung(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) | _PAGE_ACCESSED)); return pte; } 194static inline pte_t pte_mkclean(pte_t pte) { return __pte(pte_val(pte) & ~_PAGE_DIRTY); }
194static inline pte_t pte_mkwrite(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) | _PAGE_RW)); return pte; } 195static inline pte_t pte_mkold(pte_t pte) { return __pte(pte_val(pte) & ~_PAGE_ACCESSED); }
195static inline pte_t pte_mkhuge(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) | _PAGE_PSE)); return pte; } 196static inline pte_t pte_wrprotect(pte_t pte) { return __pte(pte_val(pte) & ~_PAGE_RW); }
196static inline pte_t pte_clrhuge(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_PSE)); return pte; } 197static inline pte_t pte_mkexec(pte_t pte) { return __pte(pte_val(pte) & ~_PAGE_NX); }
198static inline pte_t pte_mkdirty(pte_t pte) { return __pte(pte_val(pte) | _PAGE_DIRTY); }
199static inline pte_t pte_mkyoung(pte_t pte) { return __pte(pte_val(pte) | _PAGE_ACCESSED); }
200static inline pte_t pte_mkwrite(pte_t pte) { return __pte(pte_val(pte) | _PAGE_RW); }
201static inline pte_t pte_mkhuge(pte_t pte) { return __pte(pte_val(pte) | _PAGE_PSE); }
202static inline pte_t pte_clrhuge(pte_t pte) { return __pte(pte_val(pte) & ~_PAGE_PSE); }
197 203
198struct vm_area_struct; 204struct vm_area_struct;
199 205