s390/barrier: cleanup barrier functions
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Mon, 14 May 2012 10:40:43 +0000 (12:40 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 16 May 2012 12:42:45 +0000 (14:42 +0200)
s390 really has no eieio instruction, so get rid of the implied ppc
semantics and in addition change mb() into a function.
Also remove SYNC_OTHER_CORES() since it is unused.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/barrier.h

index 451273ad4d342543ad53f40ccd17d65eff0b7068..6993b20d64fb6c1e263c532a39868c91ee0753a5 100644 (file)
  * Force strict CPU ordering.
  * And yes, this is required on UP too when we're talking
  * to devices.
- *
- * This is very similar to the ppc eieio/sync instruction in that is
- * does a checkpoint syncronisation & makes sure that 
- * all memory ops have completed wrt other CPU's ( see 7-15 POP  DJB ).
  */
 
-#define eieio()        asm volatile("bcr 15,0" : : : "memory")
-#define SYNC_OTHER_CORES(x)   eieio()
-#define mb()    eieio()
-#define rmb()   eieio()
-#define wmb()   eieio()
-#define read_barrier_depends() do { } while(0)
-#define smp_mb()       mb()
-#define smp_rmb()      rmb()
-#define smp_wmb()      wmb()
-#define smp_read_barrier_depends()    read_barrier_depends()
-#define smp_mb__before_clear_bit()     smp_mb()
-#define smp_mb__after_clear_bit()      smp_mb()
+static inline void mb(void)
+{
+       asm volatile("bcr 15,0" : : : "memory");
+}
+
+#define rmb()                          mb()
+#define wmb()                          mb()
+#define read_barrier_depends()         do { } while(0)
+#define smp_mb()                       mb()
+#define smp_rmb()                      rmb()
+#define smp_wmb()                      wmb()
+#define smp_read_barrier_depends()     read_barrier_depends()
+#define smp_mb__before_clear_bit()     smp_mb()
+#define smp_mb__after_clear_bit()      smp_mb()
 
-#define set_mb(var, value)      do { var = value; mb(); } while (0)
+#define set_mb(var, value)             do { var = value; mb(); } while (0)
 
 #endif /* __ASM_BARRIER_H */