Support sparcv9 32-bit build
[urcu.git] / urcu / uatomic_arch_sparc64.h
index 87deacd1a064366bceb799cf8620485c06ba6206..28829d285811bfabce58ffc00847ff645f70e460 100644 (file)
@@ -24,7 +24,7 @@
 #include <urcu/system.h>
 
 #ifndef __SIZEOF_LONG__
-#if (defined(__sparc_v8__) || defined(__sparc_v9__))
+#ifdef __LP64__
 #define __SIZEOF_LONG__ 8
 #else
 #define __SIZEOF_LONG__ 4
@@ -90,9 +90,9 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
        switch (len) {
        case 4:
        {
-               unsigned int old;
+               unsigned int old, oldt;
 
-               oldt = uatomic_read(addr);
+               oldt = uatomic_read((unsigned int *)addr);
                do {
                        old = oldt;
                        oldt = _uatomic_cmpxchg(addr, old, val, 4);
@@ -103,9 +103,9 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
 #if (BITS_PER_LONG == 64)
        case 8:
        {
-               unsigned long old;
+               unsigned long old, oldt;
 
-               oldt = uatomic_read(addr);
+               oldt = uatomic_read((unsigned long *)addr);
                do {
                        old = oldt;
                        oldt = _uatomic_cmpxchg(addr, old, val, 8);
@@ -132,9 +132,9 @@ unsigned long _uatomic_add_return(void *addr, unsigned long val,
        switch (len) {
        case 4:
        {
-               unsigned int old;
+               unsigned int old, oldt;
 
-               oldt = uatomic_read(addr);
+               oldt = uatomic_read((unsigned int *)addr);
                do {
                        old = oldt;
                        oldt = _uatomic_cmpxchg(addr, old, old + val, 4);
@@ -145,9 +145,9 @@ unsigned long _uatomic_add_return(void *addr, unsigned long val,
 #if (BITS_PER_LONG == 64)
        case 8:
        {
-               unsigned long old;
+               unsigned long old, oldt;
 
-               oldt = uatomic_read(addr);
+               oldt = uatomic_read((unsigned long *)addr);
                do {
                        old = oldt;
                        oldt = _uatomic_cmpxchg(addr, old, old + val, 8);
This page took 0.023441 seconds and 4 git commands to generate.