Module Name: src Committed By: riastradh Date: Sun Dec 19 12:25:05 UTC 2021
Modified Files: src/sys/external/bsd/common/include/asm: barrier.h Log Message: linux: Define mb/wmb/rmb for x86. These are _not_ SMP barriers; on Linux they specifically mean mfence/sfence/lfence. Although membar_sync and mb agree, and membar_consumer and rmb agree, membar_producer and wmb _do not_ agree on x86 -- Linux's wmb is specifically sfence, which is important only for unusual memory types, whereas our membar_producer is limited to ordinary memory. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 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.8 src/sys/external/bsd/common/include/asm/barrier.h:1.9 --- src/sys/external/bsd/common/include/asm/barrier.h:1.8 Sun Dec 19 11:02:54 2021 +++ src/sys/external/bsd/common/include/asm/barrier.h Sun Dec 19 12:25:05 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: barrier.h,v 1.8 2021/12/19 11:02:54 riastradh Exp $ */ +/* $NetBSD: barrier.h,v 1.9 2021/12/19 12:25:05 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -46,6 +46,11 @@ #define mb() __asm __volatile ("dsb sy" ::: "memory") #define wmb() __asm __volatile ("dsb st" ::: "memory") #define rmb() __asm __volatile ("dsb ld" ::: "memory") +#elif defined(__x86_64__) +#include <x86/cpufunc.h> +#define mb() x86_mfence() +#define wmb() x86_sfence() +#define rmb() x86_lfence() #else #define mb membar_sync #define wmb membar_producer