From: Thibaut Artis <artous@uplex.de>
Date: Wed, 22 Jul 2026 10:39:00 +0200
Subject: Update vmb.h with the newer version from Vinyl-Cache
Forwarded: not-applicable

The previous version triggered build fails on some architectures
https://buildd.debian.org/status/fetch.php?pkg=libvmod-objvar&arch=arm64&ver=0.0%7Egit20260330-1&stamp=1784625177&raw=0

diff --git a/src/vmb.h b/src/vmb.h
index 9c148fb..2e3f525 100644
--- a/src/vmb.h
+++ b/src/vmb.h
@@ -4,6 +4,8 @@
  *
  * Author: Poul-Henning Kamp <phk@phk.freebsd.dk>
  *
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -27,60 +29,38 @@
  *
  * Memory barriers
  *
- * XXX: It is utterly braindamaged, that no standard facility for this
- * XXX: is available.  The "just use pthreads locking" excuse does not
- * XXX: make sense, and does not apply to two unthreaded programs sharing
- * XXX: a memory segment.
  */
 
 #ifndef VMB_H_INCLUDED
 #define VMB_H_INCLUDED
 
-#if defined(__FreeBSD__)
-#include <sys/param.h>
-#endif
-
-#if defined(__FreeBSD__) && __FreeBSD_version >= 800058
+#if defined(HAVE_STDATOMIC_H) && !defined(__FLEXELINT__)
 
-#include <sys/types.h>
-#include <machine/atomic.h>
-#define VMB()	mb()
-#define VWMB()	wmb()
-#define VRMB()	rmb()
+#  include <stdatomic.h>
+#  define VWMB()	atomic_thread_fence(memory_order_release)
+#  define VRMB()	atomic_thread_fence(memory_order_acquire)
 
 #elif defined(__amd64__) && defined(__GNUC__)
 
-#define VMB()	__asm __volatile("mfence;" : : : "memory")
-#define VWMB()	__asm __volatile("sfence;" : : : "memory")
-#define VRMB()	__asm __volatile("lfence;" : : : "memory")
-
-#elif defined(__arm__)
-
-#define VMB()
-#define VWMB()
-#define VRMB()
+#  define VWMB()	__asm __volatile("sfence;" : : : "memory")
+#  define VRMB()	__asm __volatile("lfence;" : : : "memory")
 
 #elif defined(__i386__) && defined(__GNUC__)
 
-#define VMB()	__asm __volatile("lock; addl $0,(%%esp)" : : : "memory")
-#define VWMB()	__asm __volatile("lock; addl $0,(%%esp)" : : : "memory")
-#define VRMB()	__asm __volatile("lock; addl $0,(%%esp)" : : : "memory")
+#  define VWMB()	__asm __volatile("lock; addl $0,(%%esp)" : : : "memory")
+#  define VRMB()	__asm __volatile("lock; addl $0,(%%esp)" : : : "memory")
 
 #elif defined(__sparc64__) && defined(__GNUC__)
 
-#define VMB()	__asm__ __volatile__ ("membar #MemIssue": : :"memory")
-#define VWMB()	VMB()
-#define VRMB()	VMB()
+#  define VWMB()	__asm__ __volatile__ ("membar #MemIssue": : :"memory")
+#  define VRMB()	__asm__ __volatile__ ("membar #MemIssue": : :"memory")
 
 #else
 
-#define VMB_NEEDS_PTHREAD_WORKAROUND_THIS_IS_BAD_FOR_PERFORMANCE 1
-
-void vmb_pthread(void);
-
-#define VMB()	vmb_pthread()
-#define VWMB()	vmb_pthread()
-#define VRMB()	vmb_pthread()
+#  define VMB_NEEDS_PTHREAD_WORKAROUND_THIS_IS_BAD_FOR_PERFORMANCE 1
+   void vmb_pthread(void);
+#  define VWMB()	vmb_pthread()
+#  define VRMB()	vmb_pthread()
 
 #endif
 
