Commit 19391c85 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Pavel Emelyanov

arm: atomic -- Use signed types for atomic_add_return/atomic_sub_return

Just like kernel does.
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 862e0fb2
...@@ -22,10 +22,10 @@ typedef struct { ...@@ -22,10 +22,10 @@ typedef struct {
#define atomic_set(mem,v) ((mem)->counter = (v)) #define atomic_set(mem,v) ((mem)->counter = (v))
#define atomic_get(v) (*(volatile u32 *)&(v)->counter) #define atomic_get(v) (*(volatile u32 *)&(v)->counter)
static inline unsigned int atomic_add_return(int i, atomic_t *v) static inline int atomic_add_return(int i, atomic_t *v)
{ {
unsigned long tmp; unsigned long tmp;
unsigned int result; int result;
smp_mb(); smp_mb();
...@@ -44,7 +44,7 @@ static inline unsigned int atomic_add_return(int i, atomic_t *v) ...@@ -44,7 +44,7 @@ static inline unsigned int atomic_add_return(int i, atomic_t *v)
return result; return result;
} }
static inline unsigned int atomic_sub_return(int i, atomic_t *v) static inline int atomic_sub_return(int i, atomic_t *v)
{ {
unsigned long tmp; unsigned long tmp;
int result; int result;
...@@ -66,11 +66,11 @@ static inline unsigned int atomic_sub_return(int i, atomic_t *v) ...@@ -66,11 +66,11 @@ static inline unsigned int atomic_sub_return(int i, atomic_t *v)
return result; return result;
} }
static inline unsigned int atomic_inc(atomic_t *v) { return atomic_add_return(1, v) - 1; } static inline int atomic_inc(atomic_t *v) { return atomic_add_return(1, v) - 1; }
static inline unsigned int atomic_add(atomic_t *v, unsigned int val) { return atomic_add_return(val, v) - val; } static inline int atomic_add(atomic_t *v, int val) { return atomic_add_return(val, v) - val; }
static inline unsigned int atomic_dec(atomic_t *v) { return atomic_sub_return(1, v) + 1; } static inline int atomic_dec(atomic_t *v) { return atomic_sub_return(1, v) + 1; }
/* true if the result is 0, or false for all other cases. */ /* true if the result is 0, or false for all other cases. */
#define atomic_dec_and_test(v) (atomic_sub_return(1, v) == 0) #define atomic_dec_and_test(v) (atomic_sub_return(1, v) == 0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment