x86: unify pgtable accessors which use, #2
based on: Subject: x86: unify pgtable accessors which use supported_pte_mask From: Jeremy Fitzhardinge <jeremy@goop.org> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
@@ -155,6 +155,21 @@ static inline pmd_t pfn_pmd(unsigned long page_nr, pgprot_t pgprot)
|
|||||||
pgprot_val(pgprot)) & __supported_pte_mask);
|
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__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
#ifdef CONFIG_X86_32
|
#ifdef CONFIG_X86_32
|
||||||
|
@@ -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))
|
#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]
|
* the pgd page can be thought of an array like this: pgd_t[PTRS_PER_PGD]
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user