mirror of https://gitee.com/openkylin/linux.git
powerpc/8xx: Modify ptep_get()
Move ptep_get() close to pte_update(), in an ifdef section already dedicated to powerpc 8xx. This section contains explanation about the layout of page table entries. Also modify it to return 4 times the pte value instead of padding with zeroes. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/9f2df6621fcaf9eba15fadc61c169d0c8e2fb849.1592481938.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
86590e524e
commit
105fb38124
|
@ -249,6 +249,18 @@ static inline pte_basic_t pte_update(struct mm_struct *mm, unsigned long addr, p
|
||||||
|
|
||||||
return old;
|
return old;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_PPC_16K_PAGES
|
||||||
|
#define __HAVE_ARCH_PTEP_GET
|
||||||
|
static inline pte_t ptep_get(pte_t *ptep)
|
||||||
|
{
|
||||||
|
pte_basic_t val = READ_ONCE(ptep->pte);
|
||||||
|
pte_t pte = {val, val, val, val};
|
||||||
|
|
||||||
|
return pte;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_PPC_16K_PAGES */
|
||||||
|
|
||||||
#else
|
#else
|
||||||
static inline pte_basic_t pte_update(struct mm_struct *mm, unsigned long addr, pte_t *p,
|
static inline pte_basic_t pte_update(struct mm_struct *mm, unsigned long addr, pte_t *p,
|
||||||
unsigned long clr, unsigned long set, int huge)
|
unsigned long clr, unsigned long set, int huge)
|
||||||
|
@ -284,16 +296,6 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
|
||||||
return __pte(pte_update(mm, addr, ptep, ~0, 0, 0));
|
return __pte(pte_update(mm, addr, ptep, ~0, 0, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_PPC_8xx) && defined(CONFIG_PPC_16K_PAGES)
|
|
||||||
#define __HAVE_ARCH_PTEP_GET
|
|
||||||
static inline pte_t ptep_get(pte_t *ptep)
|
|
||||||
{
|
|
||||||
pte_t pte = {READ_ONCE(ptep->pte), 0, 0, 0};
|
|
||||||
|
|
||||||
return pte;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define __HAVE_ARCH_PTEP_SET_WRPROTECT
|
#define __HAVE_ARCH_PTEP_SET_WRPROTECT
|
||||||
static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr,
|
static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr,
|
||||||
pte_t *ptep)
|
pte_t *ptep)
|
||||||
|
|
Loading…
Reference in New Issue