Changeset 10c071e in mainline for arch/ia64/include/atomic.h
- Timestamp:
- 2005-12-15T16:57:48Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6c68b97
- Parents:
- b4cad8b2
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia64/include/atomic.h
rb4cad8b2 r10c071e 34 34 typedef struct { volatile __u64 count; } atomic_t; 35 35 36 static inline atomic_t atomic_add(atomic_t *val, int imm) 36 /** Atomic addition. 37 * 38 * @param val Atomic value. 39 * @param imm Value to add. 40 * 41 * @return Value after addition. 42 */ 43 static inline count_t atomic_add(atomic_t *val, int imm) 37 44 { 38 atomic_t v;45 count_t v; 39 46 40 41 47 __asm__ volatile ("fetchadd8.rel %0 = %1, %2\n" : "=r" (v), "+m" (val->count) : "i" (imm)); 42 48 … … 57 63 static inline void atomic_dec(atomic_t *val) { atomic_add(val, -1); } 58 64 65 static inline count_t atomic_inc_pre(atomic_t *val) { return atomic_add(val, 1); } 66 static inline count_t atomic_dec_pre(atomic_t *val) { return atomic_add(val, -1); } 59 67 60 static inline atomic_t atomic_inc_pre(atomic_t *val) { return atomic_add(val, 1); } 61 static inline atomic_t atomic_dec_pre(atomic_t *val) { return atomic_add(val, -1); } 62 63 64 static inline atomic_t atomic_inc_post(atomic_t *val) { return atomic_add(val, 1) + 1; } 65 static inline atomic_t atomic_dec_post(atomic_t *val) { return atomic_add(val, -1) - 1; } 68 static inline count_t atomic_inc_post(atomic_t *val) { return atomic_add(val, 1) + 1; } 69 static inline count_t atomic_dec_post(atomic_t *val) { return atomic_add(val, -1) - 1; } 66 70 67 71 #endif
Note:
See TracChangeset
for help on using the changeset viewer.