diff options
-rw-r--r-- | arch/powerpc/include/asm/book3s/64/hash-64k.h | 4 | ||||
-rw-r--r-- | arch/powerpc/mm/hash64_64k.c | 1 |
2 files changed, 3 insertions, 2 deletions
diff --git a/arch/powerpc/include/asm/book3s/64/hash-64k.h b/arch/powerpc/include/asm/book3s/64/hash-64k.h index a268416..9fca7fa 100644 --- a/arch/powerpc/include/asm/book3s/64/hash-64k.h +++ b/arch/powerpc/include/asm/book3s/64/hash-64k.h @@ -61,6 +61,7 @@ static inline real_pte_t __real_pte(pte_t pte, pte_t *ptep) { real_pte_t rpte; + unsigned long *hidxp; rpte.pte = pte; rpte.hidx = 0; @@ -70,7 +71,8 @@ static inline real_pte_t __real_pte(pte_t pte, pte_t *ptep) * check. The store side ordering is done in __hash_page_4K */ smp_rmb(); - rpte.hidx = pte_val(*((ptep) + PTRS_PER_PTE)); + hidxp = (unsigned long *)(ptep + PTRS_PER_PTE); + rpte.hidx = *hidxp; } return rpte; } diff --git a/arch/powerpc/mm/hash64_64k.c b/arch/powerpc/mm/hash64_64k.c index f1b86ba..8f73280 100644 --- a/arch/powerpc/mm/hash64_64k.c +++ b/arch/powerpc/mm/hash64_64k.c @@ -218,7 +218,6 @@ repeat: * nobody is undating hidx. */ hidxp = (unsigned long *)(ptep + PTRS_PER_PTE); - /* __real_pte use pte_val() any idea why ? FIXME!! */ rpte.hidx &= ~(0xfUL << (subpg_index << 2)); *hidxp = rpte.hidx | (slot << (subpg_index << 2)); new_pte = mark_subptegroup_valid(new_pte, subpg_index); |