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