summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsg <jsg@openbsd.org>2016-05-16 13:18:51 +0000
committerjsg <jsg@openbsd.org>2016-05-16 13:18:51 +0000
commit5814f4d19e40aba733a0c3d4f2bf21ece9d8a863 (patch)
tree084dca592987c9e6aecc3e6e63067c895602fe9f
parentfix perms (previous cleanup commit introduced part of an unrelated change) (diff)
downloadwireguard-openbsd-5814f4d19e40aba733a0c3d4f2bf21ece9d8a863.tar.xz
wireguard-openbsd-5814f4d19e40aba733a0c3d4f2bf21ece9d8a863.zip
Implement membar(9) for armv5. As there are no barrier instructions in
armv5 this is just a "memory" clobber hint to the compiler. ok kettenis@
-rw-r--r--sys/arch/arm/include/atomic.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/sys/arch/arm/include/atomic.h b/sys/arch/arm/include/atomic.h
index b50a12e9c12..27dddf96e60 100644
--- a/sys/arch/arm/include/atomic.h
+++ b/sys/arch/arm/include/atomic.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: atomic.h,v 1.14 2016/04/25 08:00:43 patrick Exp $ */
+/* $OpenBSD: atomic.h,v 1.15 2016/05/16 13:18:51 jsg Exp $ */
/* Public Domain */
@@ -465,6 +465,19 @@ atomic_clearbits_int(volatile unsigned int *p, unsigned int v)
: "memory", "cc"
);
}
+#endif /* CPU_ARMv7 */
+
+#if !defined(CPU_ARMv7)
+
+#define __membar() do { __asm __volatile("" ::: "memory"); } while (0)
+
+#define membar_enter() __membar()
+#define membar_exit() __membar()
+#define membar_producer() __membar()
+#define membar_consumer() __membar()
+#define membar_sync() __membar()
+
+#else /* !CPU_ARMv7 */
#define __membar(_f) do { __asm __volatile(_f ::: "memory"); } while (0)