i386: use pte_update_defer in ptep_test_and_clear_{dirty,young}
[powerpc.git] / include / asm-i386 / mutex.h
index 4e5e3de..7a17d9e 100644 (file)
@@ -9,6 +9,8 @@
 #ifndef _ASM_MUTEX_H
 #define _ASM_MUTEX_H
 
+#include "asm/alternative.h"
+
 /**
  *  __mutex_fastpath_lock - try to take the lock by moving the count
  *                          from 1 to a 0 value
@@ -27,8 +29,10 @@ do {                                                                 \
        typecheck_fn(fastcall void (*)(atomic_t *), fail_fn);           \
                                                                        \
        __asm__ __volatile__(                                           \
-               LOCK    "   decl (%%eax)        \n"                     \
-                       "   js "#fail_fn"       \n"                     \
+               LOCK_PREFIX "   decl (%%eax)    \n"                     \
+                       "   jns 1f              \n"                     \
+                       "   call "#fail_fn"     \n"                     \
+                       "1:                     \n"                     \
                                                                        \
                :"=a" (dummy)                                           \
                : "a" (count)                                           \
@@ -77,8 +81,10 @@ do {                                                                 \
        typecheck_fn(fastcall void (*)(atomic_t *), fail_fn);           \
                                                                        \
        __asm__ __volatile__(                                           \
-               LOCK    "   incl (%%eax)        \n"                     \
-                       "   jle "#fail_fn"      \n"                     \
+               LOCK_PREFIX "   incl (%%eax)    \n"                     \
+                       "   jg  1f              \n"                     \
+                       "   call "#fail_fn"     \n"                     \
+                       "1:                     \n"                     \
                                                                        \
                :"=a" (dummy)                                           \
                : "a" (count)                                           \
@@ -113,7 +119,7 @@ __mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *))
         * the mutex state would be.
         */
 #ifdef __HAVE_ARCH_CMPXCHG
-       if (likely(atomic_cmpxchg(count, 1, 0)) == 1)
+       if (likely(atomic_cmpxchg(count, 1, 0) == 1))
                return 1;
        return 0;
 #else