Module Name: src Committed By: jmcneill Date: Fri Oct 16 22:39:21 UTC 2020
Modified Files: src/sys/external/bsd/common/include/asm: barrier.h Log Message: Fix mb/wmb/rmb on aarch64 to use dsb instead of dmb. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/common/include/asm/barrier.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/external/bsd/common/include/asm/barrier.h diff -u src/sys/external/bsd/common/include/asm/barrier.h:1.4 src/sys/external/bsd/common/include/asm/barrier.h:1.5 --- src/sys/external/bsd/common/include/asm/barrier.h:1.4 Tue Aug 28 15:04:58 2018 +++ src/sys/external/bsd/common/include/asm/barrier.h Fri Oct 16 22:39:21 2020 @@ -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)