|
@@ -139,6 +139,17 @@ static inline void pud_clear (pud_t * pud) { }
|
|
|
#define pmd_offset(pud, address) ((pmd_t *) pud_page(*(pud)) + \
|
|
|
pmd_index(address))
|
|
|
|
|
|
+/* local pte updates need not use xchg for locking */
|
|
|
+static inline pte_t native_local_ptep_get_and_clear(pte_t *ptep)
|
|
|
+{
|
|
|
+ pte_t res;
|
|
|
+
|
|
|
+ res = *ptep;
|
|
|
+ native_pte_clear(NULL, 0, ptep);
|
|
|
+ return res;
|
|
|
+}
|
|
|
+
|
|
|
+#ifdef CONFIG_SMP
|
|
|
static inline pte_t native_ptep_get_and_clear(pte_t *ptep)
|
|
|
{
|
|
|
pte_t res;
|
|
@@ -150,6 +161,9 @@ static inline pte_t native_ptep_get_and_clear(pte_t *ptep)
|
|
|
|
|
|
return res;
|
|
|
}
|
|
|
+#else
|
|
|
+#define native_ptep_get_and_clear(xp) native_local_ptep_get_and_clear(xp)
|
|
|
+#endif
|
|
|
|
|
|
#define __HAVE_ARCH_PTE_SAME
|
|
|
static inline int pte_same(pte_t a, pte_t b)
|