From: Ingo Molnar Date: Wed, 30 Jan 2008 12:32:57 +0000 (+0100) Subject: x86: unify pgtable accessors which use, #2 X-Git-Tag: v2.6.25-rc1~1143^2~356 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=38472311679d8784c2934d071ddda23d9b3fe264;p=linux-2.6 x86: unify pgtable accessors which use, #2 based on: Subject: x86: unify pgtable accessors which use supported_pte_mask From: Jeremy Fitzhardinge Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner --- diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h index b29a122fc1..6452286e71 100644 --- a/include/asm-x86/pgtable.h +++ b/include/asm-x86/pgtable.h @@ -155,6 +155,21 @@ static inline pmd_t pfn_pmd(unsigned long page_nr, pgprot_t pgprot) pgprot_val(pgprot)) & __supported_pte_mask); } +static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) +{ + pteval_t val = pte_val(pte); + + /* + * Chop off the NX bit (if present), and add the NX portion of + * the newprot (if present): + */ + val &= _PAGE_CHG_MASK & ~_PAGE_NX; + val |= pgprot_val(newprot) & __supported_pte_mask; + + return __pte(val); +} + + #endif /* __ASSEMBLY__ */ #ifdef CONFIG_X86_32 diff --git a/include/asm-x86/pgtable_32.h b/include/asm-x86/pgtable_32.h index 0aaefdda51..109dad5e16 100644 --- a/include/asm-x86/pgtable_32.h +++ b/include/asm-x86/pgtable_32.h @@ -235,22 +235,6 @@ static inline void clone_pgd_range(pgd_t *dst, pgd_t *src, int count) #define mk_pte(page, pgprot) pfn_pte(page_to_pfn(page), (pgprot)) -static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) -{ - pte.pte_low &= _PAGE_CHG_MASK; - pte.pte_low |= pgprot_val(newprot); -#ifdef CONFIG_X86_PAE - /* - * Chop off the NX bit (if present), and add the NX portion of - * the newprot (if present): - */ - pte.pte_high &= ~(1 << (_PAGE_BIT_NX - 32)); - pte.pte_high |= (pgprot_val(newprot) >> 32) & \ - (__supported_pte_mask >> 32); -#endif - return pte; -} - /* * the pgd page can be thought of an array like this: pgd_t[PTRS_PER_PGD] *