ARM32: use dmb ish (inner shareable domain) for smp barriers
[urcu.git] / include / urcu / arch / arm.h
index 5cbca7d7f1d0d523186b40837ce93ff515615128..cb8f28dc711769f2c91544b598be95c64bc83294 100644 (file)
@@ -31,9 +31,19 @@ extern "C" {
 #endif
 
 #ifdef CONFIG_RCU_ARM_HAVE_DMB
 #endif
 
 #ifdef CONFIG_RCU_ARM_HAVE_DMB
-#define cmm_mb()       __asm__ __volatile__ ("dmb":::"memory")
-#define cmm_rmb()      __asm__ __volatile__ ("dmb":::"memory")
-#define cmm_wmb()      __asm__ __volatile__ ("dmb":::"memory")
+/*
+ * Issues full system DMB operation.
+ */
+#define cmm_mb()       __asm__ __volatile__ ("dmb sy":::"memory")
+#define cmm_rmb()      __asm__ __volatile__ ("dmb sy":::"memory")
+#define cmm_wmb()      __asm__ __volatile__ ("dmb sy":::"memory")
+
+/*
+ * Issues DMB operation only to the inner shareable domain.
+ */
+#define cmm_smp_mb()   __asm__ __volatile__ ("dmb ish":::"memory")
+#define cmm_smp_rmb()  __asm__ __volatile__ ("dmb ish":::"memory")
+#define cmm_smp_wmb()  __asm__ __volatile__ ("dmb ish":::"memory")
 #endif /* CONFIG_RCU_ARM_HAVE_DMB */
 
 #include <stdlib.h>
 #endif /* CONFIG_RCU_ARM_HAVE_DMB */
 
 #include <stdlib.h>
This page took 0.030984 seconds and 4 git commands to generate.