#define atomic_inc_return(v)           atomic_add_return(1, (v))
 
 #define atomic_sub_and_test(i, v)      (atomic_sub_return((i), (v)) == 0)
-#define atomic_dec_and_test(v)         (atomic_sub_return(1, (v)) == 0)
-#define atomic_inc_and_test(v)         (atomic_add_return(1, (v)) == 0)
+#define atomic_dec_and_test(v)         (atomic_dec_return(v) == 0)
+#define atomic_inc_and_test(v)         (atomic_inc_return(v) == 0)
 
 #define atomic_xchg(ptr, v)            (xchg(&(ptr)->counter, (v)))
 #define atomic_cmpxchg(v, old, new)    (cmpxchg(&((v)->counter), (old), (new)))