From 7db02b5279504884dc2e94871dcbd01c552bc3da Mon Sep 17 00:00:00 2001 From: zrj Date: Mon, 17 Aug 2015 15:15:54 +0300 Subject: [PATCH] drm/linux: Implement atomic64_add/atomic64_sub macros --- sys/dev/drm/include/linux/atomic.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/sys/dev/drm/include/linux/atomic.h b/sys/dev/drm/include/linux/atomic.h index bf29b9cce8..2d8b0a7512 100644 --- a/sys/dev/drm/include/linux/atomic.h +++ b/sys/dev/drm/include/linux/atomic.h @@ -51,6 +51,9 @@ typedef struct { #define atomic_inc_and_test(v) (atomic_add_return(1, (v)) == 0) #define atomic_dec_return(v) atomic_sub_return(1, (v)) +#define atomic64_add(i, v) atomic_add_return_long((i), (v)) +#define atomic64_sub(i, v) atomic_sub_return_long((i), (v)) + #define atomic_xchg(p, v) atomic_swap_int(&((p)->counter), v) #define atomic64_xchg(p, v) atomic_swap_long(&((p)->counter), v) @@ -62,12 +65,24 @@ atomic_add_return(int i, atomic_t *v) return i + atomic_fetchadd_int(&v->counter, i); } +static inline int64_t +atomic_add_return_long(int64_t i, atomic64_t *v) +{ + return i + atomic_fetchadd_long(&v->counter, i); +} + static inline int atomic_sub_return(int i, atomic_t *v) { return atomic_fetchadd_int(&v->counter, -i) - i; } +static inline int64_t +atomic_sub_return_long(int64_t i, atomic64_t *v) +{ + return atomic_fetchadd_long(&v->counter, -i) - i; +} + static inline void atomic_set(atomic_t *v, int i) { -- 2.41.0