提交 aba480e1 编写于 作者: A Aneesh Kumar K.V 提交者: Michael Ellerman

powerpc/mm: Move page table index and and vaddr to pgtable.h

Now that the page table size is a variable, we can move these to
generic pgtable.h.
Signed-off-by: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
上级 dd1842a2
...@@ -90,18 +90,8 @@ ...@@ -90,18 +90,8 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#define pmd_bad(pmd) (pmd_val(pmd) & PMD_BAD_BITS) #define pmd_bad(pmd) (pmd_val(pmd) & PMD_BAD_BITS)
#define pmd_page_vaddr(pmd) __va(pmd_val(pmd) & ~PMD_MASKED_BITS)
#define pud_bad(pud) (pud_val(pud) & PUD_BAD_BITS) #define pud_bad(pud) (pud_val(pud) & PUD_BAD_BITS)
#define pud_page_vaddr(pud) __va(pud_val(pud) & ~PUD_MASKED_BITS)
/* Pointers in the page table tree are physical addresses */
#define __pgtable_ptr_val(ptr) __pa(ptr)
#define pgd_index(address) (((address) >> (PGDIR_SHIFT)) & (PTRS_PER_PGD - 1))
#define pud_index(address) (((address) >> (PUD_SHIFT)) & (PTRS_PER_PUD - 1))
#define pmd_index(address) (((address) >> (PMD_SHIFT)) & (PTRS_PER_PMD - 1))
#define pte_index(address) (((address) >> (PAGE_SHIFT)) & (PTRS_PER_PTE - 1))
extern void hpte_need_flush(struct mm_struct *mm, unsigned long addr, extern void hpte_need_flush(struct mm_struct *mm, unsigned long addr,
pte_t *ptep, unsigned long pte, int huge); pte_t *ptep, unsigned long pte, int huge);
...@@ -174,12 +164,6 @@ static inline int pte_same(pte_t pte_a, pte_t pte_b) ...@@ -174,12 +164,6 @@ static inline int pte_same(pte_t pte_a, pte_t pte_b)
return (((pte_raw(pte_a) ^ pte_raw(pte_b)) & ~cpu_to_be64(_PAGE_HPTEFLAGS)) == 0); return (((pte_raw(pte_a) ^ pte_raw(pte_b)) & ~cpu_to_be64(_PAGE_HPTEFLAGS)) == 0);
} }
static inline unsigned long pgd_page_vaddr(pgd_t pgd)
{
return (unsigned long)__va(pgd_val(pgd) & ~PGD_MASKED_BITS);
}
/* Generic accessors to PTE bits */ /* Generic accessors to PTE bits */
static inline int pte_none(pte_t pte) { return (pte_val(pte) & ~H_PTE_NONE_MASK) == 0; } static inline int pte_none(pte_t pte) { return (pte_val(pte) & ~H_PTE_NONE_MASK) == 0; }
......
...@@ -534,6 +534,18 @@ static inline pgd_t pte_pgd(pte_t pte) ...@@ -534,6 +534,18 @@ static inline pgd_t pte_pgd(pte_t pte)
extern struct page *pgd_page(pgd_t pgd); extern struct page *pgd_page(pgd_t pgd);
/* Pointers in the page table tree are physical addresses */
#define __pgtable_ptr_val(ptr) __pa(ptr)
#define pmd_page_vaddr(pmd) __va(pmd_val(pmd) & ~PMD_MASKED_BITS)
#define pud_page_vaddr(pud) __va(pud_val(pud) & ~PUD_MASKED_BITS)
#define pgd_page_vaddr(pgd) __va(pgd_val(pgd) & ~PGD_MASKED_BITS)
#define pgd_index(address) (((address) >> (PGDIR_SHIFT)) & (PTRS_PER_PGD - 1))
#define pud_index(address) (((address) >> (PUD_SHIFT)) & (PTRS_PER_PUD - 1))
#define pmd_index(address) (((address) >> (PMD_SHIFT)) & (PTRS_PER_PMD - 1))
#define pte_index(address) (((address) >> (PAGE_SHIFT)) & (PTRS_PER_PTE - 1))
/* /*
* Find an entry in a page-table-directory. We combine the address region * Find an entry in a page-table-directory. We combine the address region
* (the high order N bits) and the pgd portion of the address. * (the high order N bits) and the pgd portion of the address.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册