]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/asm-mips/cmpxchg.h
lguest: update commentry
[linux-2.6-omap-h63xx.git] / include / asm-mips / cmpxchg.h
index c5b4708e003bae30306871d477dd01f1abae87d8..4a812c3ceb90f3b4781a6ead62d018639a66c0f4 100644 (file)
@@ -72,7 +72,7 @@
  */
 extern void __cmpxchg_called_with_bad_pointer(void);
 
-#define __cmpxchg(ptr,old,new,barrier)                                 \
+#define __cmpxchg(ptr, old, new, barrier)                              \
 ({                                                                     \
        __typeof__(ptr) __ptr = (ptr);                                  \
        __typeof__(*(ptr)) __old = (old);                               \
@@ -102,6 +102,23 @@ extern void __cmpxchg_called_with_bad_pointer(void);
 })
 
 #define cmpxchg(ptr, old, new)         __cmpxchg(ptr, old, new, smp_llsc_mb())
-#define cmpxchg_local(ptr, old, new)   __cmpxchg(ptr, old, new,)
+#define cmpxchg_local(ptr, old, new)   __cmpxchg(ptr, old, new, )
+
+#define cmpxchg64(ptr, o, n)                                           \
+  ({                                                                   \
+       BUILD_BUG_ON(sizeof(*(ptr)) != 8);                              \
+       cmpxchg((ptr), (o), (n));                                       \
+  })
+
+#ifdef CONFIG_64BIT
+#define cmpxchg64_local(ptr, o, n)                                     \
+  ({                                                                   \
+       BUILD_BUG_ON(sizeof(*(ptr)) != 8);                              \
+       cmpxchg_local((ptr), (o), (n));                                 \
+  })
+#else
+#include <asm-generic/cmpxchg-local.h>
+#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n))
+#endif
 
 #endif /* __ASM_CMPXCHG_H */