s390/barrier: factor out bcr_serialize()
authorHeiko Carstens <hca@linux.ibm.com>
Fri, 1 Oct 2021 10:56:55 +0000 (12:56 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Mon, 11 Oct 2021 18:55:58 +0000 (20:55 +0200)
Factor out bcr_serialize() inline assembly function which describes
what the bcr instruction is used for.
Use bcr_serialize() like before in mb(), but also in upcoming changes.

Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/barrier.h

index f9eddbca79d2859f856454a2a0dbce68ab9eca36..2c057e1f32000a6d15e2c9d6317b0a66cbd36519 100644 (file)
 
 #ifdef CONFIG_HAVE_MARCH_Z196_FEATURES
 /* Fast-BCR without checkpoint synchronization */
-#define __ASM_BARRIER "bcr 14,0\n"
+#define __ASM_BCR_SERIALIZE "bcr 14,0\n"
 #else
-#define __ASM_BARRIER "bcr 15,0\n"
+#define __ASM_BCR_SERIALIZE "bcr 15,0\n"
 #endif
 
-#define mb() do {  asm volatile(__ASM_BARRIER : : : "memory"); } while (0)
+static __always_inline void bcr_serialize(void)
+{
+       asm volatile(__ASM_BCR_SERIALIZE : : : "memory");
+}
 
-#define rmb()                          barrier()
-#define wmb()                          barrier()
-#define dma_rmb()                      mb()
-#define dma_wmb()                      mb()
-#define __smp_mb()                     mb()
-#define __smp_rmb()                    rmb()
-#define __smp_wmb()                    wmb()
+#define mb()           bcr_serialize()
+#define rmb()          barrier()
+#define wmb()          barrier()
+#define dma_rmb()      mb()
+#define dma_wmb()      mb()
+#define __smp_mb()     mb()
+#define __smp_rmb()    rmb()
+#define __smp_wmb()    wmb()
 
 #define __smp_store_release(p, v)                                      \
 do {                                                                   \