Module Name: src
Committed By: christos
Date: Sun Jan 19 20:15:12 UTC 2025
Modified Files:
src/external/lgpl2/userspace-rcu/dist/include/urcu/arch: sparc64.h
src/external/lgpl2/userspace-rcu/dist/include/urcu/uatomic: sparc64.h
Log Message:
Try to fix sparc < v9
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
src/external/lgpl2/userspace-rcu/dist/include/urcu/arch/sparc64.h
cvs rdiff -u -r1.1.1.1 -r1.2 \
src/external/lgpl2/userspace-rcu/dist/include/urcu/uatomic/sparc64.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/lgpl2/userspace-rcu/dist/include/urcu/arch/sparc64.h
diff -u src/external/lgpl2/userspace-rcu/dist/include/urcu/arch/sparc64.h:1.3 src/external/lgpl2/userspace-rcu/dist/include/urcu/arch/sparc64.h:1.4
--- src/external/lgpl2/userspace-rcu/dist/include/urcu/arch/sparc64.h:1.3 Sun Jan 19 11:33:14 2025
+++ src/external/lgpl2/userspace-rcu/dist/include/urcu/arch/sparc64.h Sun Jan 19 15:15:12 2025
@@ -43,8 +43,8 @@ __asm__ __volatile__("ba,pt %%xcc, 1f\n\
#define cmm_wmb() membar_safe("#StoreStore")
#else
/* from gcc config/sparc/sync.md */
-#define cmm_mb() __asm__ __volatile__("stbar\n\tldstub\t[%%sp-1], %%g0")
-#define cmm_rmb() __asm__ __volatile__("ldstub\t[%%sp-1], %%g0")
+#define cmm_mb() __asm__ __volatile__("stbar\n\tldstub\t[%sp-1], %g0")
+#define cmm_rmb() __asm__ __volatile__("ldstub\t[%sp-1], %g0")
#define cmm_wmb() __asm__ __volatile__("stbar")
#endif
Index: src/external/lgpl2/userspace-rcu/dist/include/urcu/uatomic/sparc64.h
diff -u src/external/lgpl2/userspace-rcu/dist/include/urcu/uatomic/sparc64.h:1.1.1.1 src/external/lgpl2/userspace-rcu/dist/include/urcu/uatomic/sparc64.h:1.2
--- src/external/lgpl2/userspace-rcu/dist/include/urcu/uatomic/sparc64.h:1.1.1.1 Fri Jan 17 11:00:49 2025
+++ src/external/lgpl2/userspace-rcu/dist/include/urcu/uatomic/sparc64.h Sun Jan 19 15:15:12 2025
@@ -29,6 +29,7 @@ unsigned long _uatomic_cmpxchg(void *add
switch (len) {
case 4:
{
+#ifdef __sparc_v9__
__asm__ __volatile__ (
"membar #StoreLoad | #LoadLoad\n\t"
"cas [%1],%2,%0\n\t"
@@ -36,6 +37,20 @@ unsigned long _uatomic_cmpxchg(void *add
: "+&r" (_new)
: "r" (addr), "r" (old)
: "memory");
+#else
+ __asm__ __volatile__ (
+ "ldstub [%%sp-1], %%g0\n\t"
+ "ld [%1], %%g1\n\t"
+ "cmp %%g1, %2\n\t"
+ "bne,a 1f\n\t"
+ " mov %2, %0\n\t"
+ "st %0, [%1]\n\t"
+ "stbar\n\t"
+ "1:\n\t"
+ : "+&r" (_new)
+ : "r" (addr), "r" (old)
+ : "memory", "%g1");
+#endif
return _new;
}