x86: add pgtable accessor functions for gbpages
Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
@@ -148,6 +148,8 @@ static inline void clone_pgd_range(pgd_t *dst, pgd_t *src, int count)
|
|||||||
*/
|
*/
|
||||||
#define pgd_offset_k(address) pgd_offset(&init_mm, address)
|
#define pgd_offset_k(address) pgd_offset(&init_mm, address)
|
||||||
|
|
||||||
|
static inline int pud_large(pud_t pud) { return 0; }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* the pmd page can be thought of an array like this: pmd_t[PTRS_PER_PMD]
|
* the pmd page can be thought of an array like this: pmd_t[PTRS_PER_PMD]
|
||||||
*
|
*
|
||||||
|
@@ -198,6 +198,12 @@ static inline unsigned long pmd_bad(pmd_t pmd)
|
|||||||
#define pud_offset(pgd, address) ((pud_t *) pgd_page_vaddr(*(pgd)) + pud_index(address))
|
#define pud_offset(pgd, address) ((pud_t *) pgd_page_vaddr(*(pgd)) + pud_index(address))
|
||||||
#define pud_present(pud) (pud_val(pud) & _PAGE_PRESENT)
|
#define pud_present(pud) (pud_val(pud) & _PAGE_PRESENT)
|
||||||
|
|
||||||
|
static inline int pud_large(pud_t pte)
|
||||||
|
{
|
||||||
|
return (pud_val(pte) & (_PAGE_PSE|_PAGE_PRESENT)) ==
|
||||||
|
(_PAGE_PSE|_PAGE_PRESENT);
|
||||||
|
}
|
||||||
|
|
||||||
/* PMD - Level 2 access */
|
/* PMD - Level 2 access */
|
||||||
#define pmd_page_vaddr(pmd) ((unsigned long) __va(pmd_val(pmd) & PTE_MASK))
|
#define pmd_page_vaddr(pmd) ((unsigned long) __va(pmd_val(pmd) & PTE_MASK))
|
||||||
#define pmd_page(pmd) (pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT))
|
#define pmd_page(pmd) (pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT))
|
||||||
|
Reference in New Issue
Block a user