30,9 → 30,8 |
#define __sparc64_ATOMIC_H__ |
|
#include <arch/types.h> |
#include <typedefs.h> |
|
typedef struct { volatile __u64 count; } atomic_t; |
|
/** Atomic add operation. |
* |
* Use atomic compare and swap operation to atomically add signed value. |
42,7 → 41,7 |
* |
* @return Value of the atomic variable as it existed before addition. |
*/ |
static inline count_t atomic_add(atomic_t *val, int i) |
static inline long atomic_add(atomic_t *val, int i) |
{ |
__u64 a, b; |
volatile __u64 x = (__u64) &val->count; |
62,22 → 61,22 |
return a; |
} |
|
static inline count_t atomic_preinc(atomic_t *val) |
static inline long atomic_preinc(atomic_t *val) |
{ |
return atomic_add(val, 1) + 1; |
} |
|
static inline count_t atomic_postinc(atomic_t *val) |
static inline long atomic_postinc(atomic_t *val) |
{ |
return atomic_add(val, 1); |
} |
|
static inline count_t atomic_predec(atomic_t *val) |
static inline long atomic_predec(atomic_t *val) |
{ |
return atomic_add(val, -1) - 1; |
} |
|
static inline count_t atomic_postdec(atomic_t *val) |
static inline long atomic_postdec(atomic_t *val) |
{ |
return atomic_add(val, -1); |
} |
92,14 → 91,4 |
(void) atomic_add(val, -1); |
} |
|
static inline void atomic_set(atomic_t *val, __u64 i) |
{ |
val->count = i; |
} |
|
static inline __u64 atomic_get(atomic_t *val) |
{ |
return val->count; |
} |
|
#endif |