33 #if defined(__powerpc64__) || defined (__powerpc__) 34 #include "sasatom_powerpc.h" 35 #elif defined(__x86_64__) 36 #include "sasatom_x86_64.h" 37 #elif defined(__i386__) 38 #include "sasatom_i386.h" 40 #include "sasatom_generic.h" 46 #define sas_write_barrier() __arch_sas_write_barrier() 51 #define sas_read_barrier() __arch_sas_read_barrier() 56 #define sas_full_barrier() __arch_sas_full_barrier() 61 #define sas_code_barrier() __asm ("" ::: "memory") 74 return __arch_fetch_and_add_ptr(pointer, delta);
85 static inline long int 88 return __arch_fetch_and_add(pointer, delta);
102 return __arch_compare_and_swap(p, oldval, newval);
111 static inline long int 114 return __arch_atomic_swap(p, replace);
123 __arch_atomic_inc(p);
132 __arch_atomic_dec(p);
155 __arch_sas_spin_lock(lock);
168 return __arch_sas_spin_trylock(lock);
199 long unlocked, locked;
201 unlocked = (long)(*lock) & -2L;
202 locked = unlocked | 1;
207 return (
void*)unlocked;
219 long unlocked= (long)(*lock) & -2L;
220 long newlocked= (long)newptr | 1;
235 long locked= (long)(*lock) | 1;
236 long newlocked= (long)newptr | 1;
250 long unlocked= (long)(*lock) & -2L;
251 long locked= unlocked | 1;
269 long unlocked= (long)(*lock) & -2L;
270 long locked= unlocked | 1;
static void sas_set_unlocked_ptr(volatile sas_lock_ptr_t *lock, sas_lock_ptr_t newptr)
Definition: sasatom.h:215
static void * sas_lock_ptr(volatile sas_lock_ptr_t *lock)
Definition: sasatom.h:196
static long sas_atomic_inc_long(volatile long *value)
Definition: sasatom.h:333
static void sas_spin_lock_init(volatile sas_spin_lock_t *lock)
Definition: sasatom.h:140
static void sas_spin_lock_with_yield(volatile sas_spin_lock_t *lock)
Definition: sasatom.h:280
#define sas_write_barrier()
Definition: sasatom.h:46
static long sas_atomic_dec_long(volatile long *value)
Definition: sasatom.h:352
static long int fetch_and_add(void *pointer, long int delta)
Definition: sasatom.h:86
static void sas_lock_ptr_init(volatile sas_lock_ptr_t *lock)
Definition: sasatom.h:186
static void sas_spin_lock(volatile sas_spin_lock_t *lock)
Definition: sasatom.h:153
static void sas_lock_ptr_with_yield(volatile sas_lock_ptr_t *lock)
Definition: sasatom.h:306
static int sas_spin_trylock(volatile sas_spin_lock_t *lock)
Definition: sasatom.h:166
static long int atomic_swap(long int *p, long int replace)
Definition: sasatom.h:112
unsigned int sas_spin_lock_t
Definition: sasatom.h:29
static void * fetch_and_add_ptr(void **pointer, long int delta)
Definition: sasatom.h:72
static void atomic_dec(long int *p)
Definition: sasatom.h:130
#define sas_read_barrier()
Definition: sasatom.h:51
void * sas_lock_ptr_t
Definition: sasatom.h:31
static void sas_set_locked_ptr(volatile sas_lock_ptr_t *lock, sas_lock_ptr_t newptr)
Definition: sasatom.h:231
static void sas_unlock_ptr(volatile sas_lock_ptr_t *lock)
Definition: sasatom.h:263
static void sas_spin_unlock(volatile sas_spin_lock_t *lock)
Definition: sasatom.h:175
static void atomic_inc(long int *p)
Definition: sasatom.h:121
static int sas_trylock_ptr(volatile sas_lock_ptr_t *lock)
Definition: sasatom.h:246
static int compare_and_swap(volatile long int *p, long int oldval, long int newval)
Definition: sasatom.h:100