Commit c6a34a99 authored by Davi Arnaut's avatar Davi Arnaut

Bug#52261: 64 bit atomic operations do not work on Solaris i386 ..

Workaround a interface problem with the atomic macros that was
causing warnings. The correct type is retrieved using typeof if
compiling with GCC.
parent fce8b7e1
...@@ -20,11 +20,17 @@ ...@@ -20,11 +20,17 @@
#define MY_ATOMIC_MODE "solaris-atomic" #define MY_ATOMIC_MODE "solaris-atomic"
#if defined(__GNUC__)
#define atomic_typeof(T,V) __typeof__(V)
#else
#define atomic_typeof(T,V) T
#endif
#define uintptr_t void * #define uintptr_t void *
#define atomic_or_ptr_nv(X,Y) (void *)atomic_or_ulong_nv((volatile ulong_t *)X, Y) #define atomic_or_ptr_nv(X,Y) (void *)atomic_or_ulong_nv((volatile ulong_t *)X, Y)
#define make_atomic_cas_body(S) \ #define make_atomic_cas_body(S) \
uint ## S ## _t sav; \ atomic_typeof(uint ## S ## _t, *cmp) sav; \
sav = atomic_cas_ ## S( \ sav = atomic_cas_ ## S( \
(volatile uint ## S ## _t *)a, \ (volatile uint ## S ## _t *)a, \
(uint ## S ## _t)*cmp, \ (uint ## S ## _t)*cmp, \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment