Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/external/bsd/common/include/asm Fix mb/wmb/rmb on aarch6...
details: https://anonhg.NetBSD.org/src/rev/f41e23429882
branches: trunk
changeset: 940765:f41e23429882
user: jmcneill <jmcneill%NetBSD.org@localhost>
date: Fri Oct 16 22:39:21 2020 +0000
description:
Fix mb/wmb/rmb on aarch64 to use dsb instead of dmb.
diffstat:
sys/external/bsd/common/include/asm/barrier.h | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
diffs (38 lines):
diff -r 7cb383ee553e -r f41e23429882 sys/external/bsd/common/include/asm/barrier.h
--- a/sys/external/bsd/common/include/asm/barrier.h Fri Oct 16 20:51:54 2020 +0000
+++ b/sys/external/bsd/common/include/asm/barrier.h Fri Oct 16 22:39:21 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: barrier.h,v 1.4 2018/08/28 15:04:58 riastradh Exp $ */
+/* $NetBSD: barrier.h,v 1.5 2020/10/16 22:39:21 jmcneill Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -40,9 +40,15 @@
#define MULTIPROCESSOR 1 /* safer to assume multiprocessor */
#endif
+#if defined(__aarch64__)
+#define mb() __asm __volatile ("dsb sy" ::: "memory")
+#define wmb() __asm __volatile ("dsb st" ::: "memory")
+#define rmb() __asm __volatile ("dsb ld" ::: "memory")
+#else
#define mb membar_sync
#define wmb membar_producer
#define rmb membar_consumer
+#endif
#ifdef __alpha__ /* XXX As if... */
# define read_barrier_depends membar_sync
@@ -51,9 +57,9 @@
#endif
#ifdef MULTIPROCESSOR
-# define smp_mb mb
-# define smp_wmb wmb
-# define smp_rmb rmb
+# define smp_mb membar_sync
+# define smp_wmb membar_producer
+# define smp_rmb membar_consumer
# define smp_read_barrier_depends read_barrier_depends
#else
# define smp_mb() do {} while (0)
Home |
Main Index |
Thread Index |
Old Index