#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 {                                                                   \