Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1103 → Rev 1104

/kernel/trunk/arch/sparc64/include/atomic.h
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