at v3.2 1.2 kB view raw
1#ifndef _ASM_IA64_SYNC_BITOPS_H 2#define _ASM_IA64_SYNC_BITOPS_H 3 4/* 5 * Copyright (C) 2008 Isaku Yamahata <yamahata at valinux co jp> 6 * 7 * Based on synch_bitops.h which Dan Magenhaimer wrote. 8 * 9 * bit operations which provide guaranteed strong synchronisation 10 * when communicating with Xen or other guest OSes running on other CPUs. 11 */ 12 13static inline void sync_set_bit(int nr, volatile void *addr) 14{ 15 set_bit(nr, addr); 16} 17 18static inline void sync_clear_bit(int nr, volatile void *addr) 19{ 20 clear_bit(nr, addr); 21} 22 23static inline void sync_change_bit(int nr, volatile void *addr) 24{ 25 change_bit(nr, addr); 26} 27 28static inline int sync_test_and_set_bit(int nr, volatile void *addr) 29{ 30 return test_and_set_bit(nr, addr); 31} 32 33static inline int sync_test_and_clear_bit(int nr, volatile void *addr) 34{ 35 return test_and_clear_bit(nr, addr); 36} 37 38static inline int sync_test_and_change_bit(int nr, volatile void *addr) 39{ 40 return test_and_change_bit(nr, addr); 41} 42 43static inline int sync_test_bit(int nr, const volatile void *addr) 44{ 45 return test_bit(nr, addr); 46} 47 48#define sync_cmpxchg(ptr, old, new) \ 49 ((__typeof__(*(ptr)))cmpxchg_acq((ptr), (old), (new))) 50 51#endif /* _ASM_IA64_SYNC_BITOPS_H */