You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.8 KiB
52 lines
1.8 KiB
diff -up ./pr/include/md/_linux.h.gcc-atomics ./pr/include/md/_linux.h
|
|
--- ./pr/include/md/_linux.h.gcc-atomics 2022-09-20 11:23:22.008942926 -0700
|
|
+++ ./pr/include/md/_linux.h 2022-09-20 11:34:45.536751340 -0700
|
|
@@ -105,6 +105,15 @@
|
|
#endif
|
|
|
|
#if defined(__i386__)
|
|
+#if defined(__GNUC__)
|
|
+/* Use GCC built-in functions */
|
|
+#define _PR_HAVE_ATOMIC_OPS
|
|
+#define _MD_INIT_ATOMIC()
|
|
+#define _MD_ATOMIC_INCREMENT(ptr) __sync_add_and_fetch(ptr, 1)
|
|
+#define _MD_ATOMIC_DECREMENT(ptr) __sync_sub_and_fetch(ptr, 1)
|
|
+#define _MD_ATOMIC_ADD(ptr, i) __sync_add_and_fetch(ptr, i)
|
|
+#define _MD_ATOMIC_SET(ptr, nv) __sync_lock_test_and_set(ptr, nv)
|
|
+#else
|
|
#define _PR_HAVE_ATOMIC_OPS
|
|
#define _MD_INIT_ATOMIC()
|
|
extern PRInt32 _PR_x86_AtomicIncrement(PRInt32 *val);
|
|
@@ -116,6 +125,7 @@ extern PRInt32 _PR_x86_AtomicAdd(PRInt32
|
|
extern PRInt32 _PR_x86_AtomicSet(PRInt32 *val, PRInt32 newval);
|
|
#define _MD_ATOMIC_SET _PR_x86_AtomicSet
|
|
#endif
|
|
+#endif
|
|
|
|
#if defined(__ia64__)
|
|
#define _PR_HAVE_ATOMIC_OPS
|
|
@@ -131,6 +141,15 @@ extern PRInt32 _PR_ia64_AtomicSet(PRInt3
|
|
#endif
|
|
|
|
#if defined(__x86_64__)
|
|
+#if defined(__GNUC__)
|
|
+/* Use GCC built-in functions */
|
|
+#define _PR_HAVE_ATOMIC_OPS
|
|
+#define _MD_INIT_ATOMIC()
|
|
+#define _MD_ATOMIC_INCREMENT(ptr) __sync_add_and_fetch(ptr, 1)
|
|
+#define _MD_ATOMIC_DECREMENT(ptr) __sync_sub_and_fetch(ptr, 1)
|
|
+#define _MD_ATOMIC_ADD(ptr, i) __sync_add_and_fetch(ptr, i)
|
|
+#define _MD_ATOMIC_SET(ptr, nv) __sync_lock_test_and_set(ptr, nv)
|
|
+#else
|
|
#define _PR_HAVE_ATOMIC_OPS
|
|
#define _MD_INIT_ATOMIC()
|
|
extern PRInt32 _PR_x86_64_AtomicIncrement(PRInt32 *val);
|
|
@@ -142,6 +161,7 @@ extern PRInt32 _PR_x86_64_AtomicAdd(PRIn
|
|
extern PRInt32 _PR_x86_64_AtomicSet(PRInt32 *val, PRInt32 newval);
|
|
#define _MD_ATOMIC_SET _PR_x86_64_AtomicSet
|
|
#endif
|
|
+#endif
|
|
|
|
#if defined(__loongarch__)
|
|
#if defined(__GNUC__)
|