From d0907bef4f489013ad051a1623afca36183edf2c Mon Sep 17 00:00:00 2001 From: Diogo Netto Date: Wed, 4 Jan 2023 14:47:08 -0500 Subject: [PATCH] replace mfence with lock'ed inst --- src/julia_atomics.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/julia_atomics.h b/src/julia_atomics.h index cb14e535cd010..e2121a9b4038a 100644 --- a/src/julia_atomics.h +++ b/src/julia_atomics.h @@ -73,7 +73,11 @@ enum jl_memory_order { * are). We also need to access these atomic variables from the LLVM JIT code * which is very hard unless the layout of the object is fully specified. */ -#define jl_fence() atomic_thread_fence(memory_order_seq_cst) +#if defined(_CPU_X86_64_) + #define jl_fence() __asm__ volatile("lock orq $0 , (%rsp)") +#else + #define jl_fence() atomic_thread_fence(memory_order_seq_cst) +#endif #define jl_fence_release() atomic_thread_fence(memory_order_release) #define jl_signal_fence() atomic_signal_fence(memory_order_seq_cst)