From d02c0e05db3309422109aaa3cf6fa66bc76e527a Mon Sep 17 00:00:00 2001 From: Taylor R Campbell Date: Tue, 19 Jul 2022 16:30:11 +0000 Subject: [PATCH] linux: Use dsb(sy/st/ld) from arm/cpufunc.h for mb/wmb/rmb. Works on more Arm CPU types this way. --- sys/external/bsd/common/include/asm/barrier.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sys/external/bsd/common/include/asm/barrier.h b/sys/external/bsd/common/include/asm/barrier.h index c4ef89b6162d..f78baebd8433 100644 --- a/sys/external/bsd/common/include/asm/barrier.h +++ b/sys/external/bsd/common/include/asm/barrier.h @@ -51,11 +51,13 @@ * doesn't pass around the bus space tag and handle needed for that. */ #if defined(__aarch64__) -#define mb() __asm __volatile ("dsb sy" ::: "memory") -#define wmb() __asm __volatile ("dsb st" ::: "memory") -#define rmb() __asm __volatile ("dsb ld" ::: "memory") +#include +#define mb() dsb(sy) +#define wmb() dsb(st) +#define rmb() dsb(ld) #elif defined(__arm__) -#define mb() __asm __volatile ("dsb" ::: "memory") +#include +#define mb() dsb(sy) #define wmb() mb() #define rmb() mb() #elif defined(__i386__) || defined(__x86_64__)