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;
 	}

Reply via email to