···178178 pte_t *ptep, unsigned long clr,179179 int huge)180180{181181+#ifdef PTE_ATOMIC_UPDATES181182 unsigned long old, tmp;182183183184 __asm__ __volatile__(···191190 : "=&r" (old), "=&r" (tmp), "=m" (*ptep)192191 : "r" (ptep), "r" (clr), "m" (*ptep), "i" (_PAGE_BUSY)193192 : "cc" );194194-193193+#else194194+ unsigned long old = pte_val(*ptep);195195+ *ptep = __pte(old & ~clr);196196+#endif195197 /* huge pages use the old page table lock */196198 if (!huge)197199 assert_pte_locked(mm, addr);···282278 unsigned long bits = pte_val(entry) &283279 (_PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_RW |284280 _PAGE_EXEC | _PAGE_HWEXEC);281281+282282+#ifdef PTE_ATOMIC_UPDATES285283 unsigned long old, tmp;286284287285 __asm__ __volatile__(···296290 :"=&r" (old), "=&r" (tmp), "=m" (*ptep)297291 :"r" (bits), "r" (ptep), "m" (*ptep), "i" (_PAGE_BUSY)298292 :"cc");293293+#else294294+ unsigned long old = pte_val(*ptep);295295+ *ptep = __pte(old | bits);296296+#endif299297}300298301299#define __HAVE_ARCH_PTE_SAME
+2
arch/powerpc/include/asm/pte-hash64.h
···4141#define _PTEIDX_SECONDARY 0x84242#define _PTEIDX_GROUP_IX 0x743434444+/* Hash table based platforms need atomic updates of the linux PTE */4545+#define PTE_ATOMIC_UPDATES 144464547#ifdef CONFIG_PPC_64K_PAGES4648#include <asm/pte-hash64-64k.h>