]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
powerpc/nohash: Use IS_ENABLED() to simplify __set_pte_at()
authorChristophe Leroy <christophe.leroy@c-s.fr>
Tue, 24 Apr 2018 16:31:32 +0000 (18:31 +0200)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 7 May 2018 10:37:47 +0000 (20:37 +1000)
By using IS_ENABLED() we can simplify __set_pte_at() by removing
redundant *ptep = pte.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Reviewed-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/nohash/pgtable.h

index 36a1ea6a78060f88f88f4be61570299036404efe..2160be2e4339d5946c8f8a048a3563f4482bc36c 100644 (file)
@@ -147,40 +147,33 @@ extern void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep,
 static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
                                pte_t *ptep, pte_t pte, int percpu)
 {
-#if defined(CONFIG_PPC32) && defined(CONFIG_PTE_64BIT)
        /* Second case is 32-bit with 64-bit PTE.  In this case, we
         * can just store as long as we do the two halves in the right order
         * with a barrier in between.
         * In the percpu case, we also fallback to the simple update
         */
-       if (percpu) {
-               *ptep = pte;
+       if (IS_ENABLED(CONFIG_PPC32) && IS_ENABLED(CONFIG_PTE_64BIT) && !percpu) {
+               __asm__ __volatile__("\
+                       stw%U0%X0 %2,%0\n\
+                       eieio\n\
+                       stw%U0%X0 %L2,%1"
+               : "=m" (*ptep), "=m" (*((unsigned char *)ptep+4))
+               : "r" (pte) : "memory");
                return;
        }
-       __asm__ __volatile__("\
-               stw%U0%X0 %2,%0\n\
-               eieio\n\
-               stw%U0%X0 %L2,%1"
-       : "=m" (*ptep), "=m" (*((unsigned char *)ptep+4))
-       : "r" (pte) : "memory");
-
-#else
        /* Anything else just stores the PTE normally. That covers all 64-bit
         * cases, and 32-bit non-hash with 32-bit PTEs.
         */
        *ptep = pte;
 
-#ifdef CONFIG_PPC_BOOK3E_64
        /*
         * With hardware tablewalk, a sync is needed to ensure that
         * subsequent accesses see the PTE we just wrote.  Unlike userspace
         * mappings, we can't tolerate spurious faults, so make sure
         * the new PTE will be seen the first time.
         */
-       if (is_kernel_addr(addr))
+       if (IS_ENABLED(CONFIG_PPC_BOOK3E_64) && is_kernel_addr(addr))
                mb();
-#endif
-#endif
 }