]> err.no Git - linux-2.6/blobdiff - include/asm-arm/bitops.h
Merge master.kernel.org:/pub/scm/linux/kernel/git/acme/net-2.6
[linux-2.6] / include / asm-arm / bitops.h
index 4edd4dc40c5bcf991bb9cce6556f98b8de7b4afc..aad7aad026b319d7390ab3bf974f61d25c1ba5e6 100644 (file)
@@ -21,8 +21,8 @@
 
 #include <asm/system.h>
 
-#define smp_mb__before_clear_bit()     do { } while (0)
-#define smp_mb__after_clear_bit()      do { } while (0)
+#define smp_mb__before_clear_bit()     mb()
+#define smp_mb__after_clear_bit()      mb()
 
 /*
  * These functions are the basis of our bit ops.
@@ -229,6 +229,7 @@ extern int _find_next_zero_bit_be(const void * p, int size, int offset);
 extern int _find_first_bit_be(const unsigned long *p, unsigned size);
 extern int _find_next_bit_be(const unsigned long *p, int size, int offset);
 
+#ifndef CONFIG_SMP
 /*
  * The __* form of bitops are non-atomic and may be reordered.
  */
@@ -241,6 +242,10 @@ extern int _find_next_bit_be(const unsigned long *p, int size, int offset);
        (__builtin_constant_p(nr) ?             \
         ____atomic_##name(nr, p) :             \
         _##name##_be(nr,p))
+#else
+#define ATOMIC_BITOP_LE(name,nr,p)     _##name##_le(nr,p)
+#define ATOMIC_BITOP_BE(name,nr,p)     _##name##_be(nr,p)
+#endif
 
 #define NONATOMIC_BITOP(name,nr,p)             \
        (____nonatomic_##name(nr, p))