Lines Matching full:addr
29 void android_atomic_write(int32_t value, volatile int32_t* addr) {
32 oldValue = *addr;
33 } while (OSAtomicCompareAndSwap32Barrier(oldValue, value, (int32_t*)addr) == 0);
36 int32_t android_atomic_inc(volatile int32_t* addr) {
37 return OSAtomicIncrement32Barrier((int32_t*)addr)-1;
40 int32_t android_atomic_dec(volatile int32_t* addr) {
41 return OSAtomicDecrement32Barrier((int32_t*)addr)+1;
44 int32_t android_atomic_add(int32_t value, volatile int32_t* addr) {
45 return OSAtomicAdd32Barrier(value, (int32_t*)addr)-value;
48 int32_t android_atomic_and(int32_t value, volatile int32_t* addr) {
51 oldValue = *addr;
52 } while (OSAtomicCompareAndSwap32Barrier(oldValue, oldValue&value, (int32_t*)addr) == 0);
56 int32_t android_atomic_or(int32_t value, volatile int32_t* addr) {
59 oldValue = *addr;
60 } while (OSAtomicCompareAndSwap32Barrier(oldValue, oldValue|value, (int32_t*)addr) == 0);
64 int32_t android_atomic_swap(int32_t value, volatile int32_t* addr) {
67 oldValue = *addr;
68 } while (android_atomic_cmpxchg(oldValue, value, addr));
72 int android_atomic_cmpxchg(int32_t oldvalue, int32_t newvalue, volatile int32_t* addr) {
73 return OSAtomicCompareAndSwap32Barrier(oldvalue, newvalue, (int32_t*)addr) == 0;
87 volatile int64_t* addr) {
89 (int64_t*)addr) == 0;
92 int64_t android_quasiatomic_swap_64(int64_t value, volatile int64_t* addr) {
95 oldValue = *addr;
96 } while (android_quasiatomic_cmpxchg_64(oldValue, value, addr));
100 int64_t android_quasiatomic_read_64(volatile int64_t* addr) {
101 return OSAtomicAdd64Barrier(0, addr);
110 void android_atomic_write(int32_t value, volatile int32_t* addr) {
113 oldValue = *addr;
114 } while (android_atomic_cmpxchg(oldValue, value, addr));
117 int32_t android_atomic_inc(volatile int32_t* addr) {
120 oldValue = *addr;
121 } while (android_atomic_cmpxchg(oldValue, oldValue+1, addr));
125 int32_t android_atomic_dec(volatile int32_t* addr) {
128 oldValue = *addr;
129 } while (android_atomic_cmpxchg(oldValue, oldValue-1, addr));
133 int32_t android_atomic_add(int32_t value, volatile int32_t* addr) {
136 oldValue = *addr;
137 } while (android_atomic_cmpxchg(oldValue, oldValue+value, addr));
141 int32_t android_atomic_and(int32_t value, volatile int32_t* addr) {
144 oldValue = *addr;
145 } while (android_atomic_cmpxchg(oldValue, oldValue&value, addr));
149 int32_t android_atomic_or(int32_t value, volatile int32_t* addr) {
152 oldValue = *addr;
153 } while (android_atomic_cmpxchg(oldValue, oldValue|value, addr));
157 int32_t android_atomic_swap(int32_t value, volatile int32_t* addr) {
160 oldValue = *addr;
161 } while (android_atomic_cmpxchg(oldValue, value, addr));
165 int android_atomic_cmpxchg(int32_t oldvalue, int32_t newvalue, volatile int32_t* addr) {
173 : "a" (oldvalue), "c" (newvalue), "d" (addr)
204 #define SWAP_LOCK(addr) \
205 &_swap_locks[((unsigned)(void*)(addr) >> 3U) % SWAP_LOCK_COUNT]
208 int64_t android_quasiatomic_swap_64(int64_t value, volatile int64_t* addr) {
210 pthread_mutex_t* lock = SWAP_LOCK(addr);
214 oldValue = *addr;
215 *addr = value;
222 volatile int64_t* addr) {
224 pthread_mutex_t* lock = SWAP_LOCK(addr);
228 if (*addr == oldvalue) {
229 *addr = newvalue;
238 int64_t android_quasiatomic_read_64(volatile int64_t* addr) {
240 pthread_mutex_t* lock = SWAP_LOCK(addr);
243 result = *addr;
281 volatile int64_t* addr) {
292 if (*addr == oldvalue) {
293 *addr = newvalue;
304 int64_t android_quasiatomic_read_64(volatile int64_t* addr) {
315 result = *addr;
321 int64_t android_quasiatomic_swap_64(int64_t value, volatile int64_t* addr) {
332 result = *addr;
333 *addr = value;