]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/asm-i386/mutex.h
Merge branch 'upstream-fixes' of git://lost.foo-projects.org/~ahkok/git/netdev-2...
[linux-2.6-omap-h63xx.git] / include / asm-i386 / mutex.h
index c657d4b09f0a23d96f0cdf24bb606201f49751dd..7a17d9e58ad6586140e84a91a0a850b1b527e77a 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,15 +29,11 @@ do {                                                                        \
        typecheck_fn(fastcall void (*)(atomic_t *), fail_fn);           \
                                                                        \
        __asm__ __volatile__(                                           \
-               LOCK    "   decl (%%eax)        \n"                     \
-                       "   js 2f               \n"                     \
+               LOCK_PREFIX "   decl (%%eax)    \n"                     \
+                       "   jns 1f              \n"                     \
+                       "   call "#fail_fn"     \n"                     \
                        "1:                     \n"                     \
                                                                        \
-               LOCK_SECTION_START("")                                  \
-                       "2: call "#fail_fn"     \n"                     \
-                       "   jmp 1b              \n"                     \
-               LOCK_SECTION_END                                        \
-                                                                       \
                :"=a" (dummy)                                           \
                : "a" (count)                                           \
                : "memory", "ecx", "edx");                              \
@@ -83,15 +81,11 @@ do {                                                                        \
        typecheck_fn(fastcall void (*)(atomic_t *), fail_fn);           \
                                                                        \
        __asm__ __volatile__(                                           \
-               LOCK    "   incl (%%eax)        \n"                     \
-                       "   jle 2f              \n"                     \
+               LOCK_PREFIX "   incl (%%eax)    \n"                     \
+                       "   jg  1f              \n"                     \
+                       "   call "#fail_fn"     \n"                     \
                        "1:                     \n"                     \
                                                                        \
-               LOCK_SECTION_START("")                                  \
-                       "2: call "#fail_fn"     \n"                     \
-                       "   jmp 1b              \n"                     \
-               LOCK_SECTION_END                                        \
-                                                                       \
                :"=a" (dummy)                                           \
                : "a" (count)                                           \
                : "memory", "ecx", "edx");                              \
@@ -125,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