projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mesa/main: Do not pass context to one_time_init
[mesa.git]
/
src
/
util
/
u_atomic.c
diff --git
a/src/util/u_atomic.c
b/src/util/u_atomic.c
index 44b75fb0c00803e23ce6387ab4ed5dbfcb14882f..e4bffa8534ea46a49975cece512fc981fca00eed 100644
(file)
--- a/
src/util/u_atomic.c
+++ b/
src/util/u_atomic.c
@@
-61,15
+61,17
@@
__sync_sub_and_fetch_8(uint64_t *ptr, uint64_t val)
}
WEAK uint64_t
}
WEAK uint64_t
-__
atomic_fetch_add_8(uint64_t *ptr, uint64_t val, int memorder
)
+__
sync_val_compare_and_swap_8(uint64_t *ptr, uint64_t oldval, uint64_t newval
)
{
{
- return __sync_add_and_fetch(ptr, val);
-}
+ uint64_t r;
-WEAK uint64_t
-__atomic_fetch_sub_8(uint64_t *ptr, uint64_t val, int memorder)
-{
- return __sync_sub_and_fetch(ptr, val);
+ pthread_mutex_lock(&sync_mutex);
+ r = *ptr;
+ if (*ptr == oldval)
+ *ptr = newval;
+ pthread_mutex_unlock(&sync_mutex);
+
+ return r;
}
#endif
}
#endif