summaryrefslogtreecommitdiff
path: root/sys/external/bsd/drm2/include/linux
diff options
context:
space:
mode:
authorriastradh <riastradh@NetBSD.org>2018-08-27 15:08:54 +0000
committerriastradh <riastradh@NetBSD.org>2018-08-27 15:08:54 +0000
commit09bed39b6051cb8416edc018bfe7fa41281faeef (patch)
tree8a3b1ec3d2fae574e05f2a8d7212fc1026cc68c0 /sys/external/bsd/drm2/include/linux
parent8d560b6cdce110d89295816812954f9534523fcf (diff)
Hash-locked atomic64 to give ports like powerpc32 a chance at radeon.
Diffstat (limited to 'sys/external/bsd/drm2/include/linux')
-rw-r--r--sys/external/bsd/drm2/include/linux/atomic.h25
1 files changed, 24 insertions, 1 deletions
diff --git a/sys/external/bsd/drm2/include/linux/atomic.h b/sys/external/bsd/drm2/include/linux/atomic.h
index 7433d34313a..703c130ba1d 100644
--- a/sys/external/bsd/drm2/include/linux/atomic.h
+++ b/sys/external/bsd/drm2/include/linux/atomic.h
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic.h,v 1.14 2018/08/27 13:58:16 riastradh Exp $ */
+/* $NetBSD: atomic.h,v 1.15 2018/08/27 15:08:54 riastradh Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -229,6 +229,11 @@ struct atomic64 {
typedef struct atomic64 atomic64_t;
+int linux_atomic64_init(void);
+void linux_atomic64_fini(void);
+
+#ifdef __HAVE_ATOMIC64_OPS
+
static inline uint64_t
atomic64_read(const struct atomic64 *a)
{
@@ -286,6 +291,24 @@ atomic64_cmpxchg(struct atomic64 *atomic, uint64_t expect, uint64_t new)
return old;
}
+#else /* !defined(__HAVE_ATOMIC64_OPS) */
+
+#define atomic64_read linux_atomic64_read
+#define atomic64_set linux_atomic64_set
+#define atomic64_add linux_atomic64_add
+#define atomic64_sub linux_atomic64_sub
+#define atomic64_xchg linux_atomic64_xchg
+#define atomic64_cmpxchg linux_atomic64_cmpxchg
+
+uint64_t atomic64_read(const struct atomic64 *);
+void atomic64_set(struct atomic64 *, uint64_t);
+void atomic64_add(long long, struct atomic64 *);
+void atomic64_sub(long long, struct atomic64 *);
+uint64_t atomic64_xchg(struct atomic64 *, uint64_t);
+uint64_t atomic64_cmpxchg(struct atomic64 *, uint64_t, uint64_t);
+
+#endif
+
struct atomic_long {
volatile unsigned long al_v;
};