diff options
| author | riastradh <riastradh@NetBSD.org> | 2018-08-27 15:08:54 +0000 |
|---|---|---|
| committer | riastradh <riastradh@NetBSD.org> | 2018-08-27 15:08:54 +0000 |
| commit | 09bed39b6051cb8416edc018bfe7fa41281faeef (patch) | |
| tree | 8a3b1ec3d2fae574e05f2a8d7212fc1026cc68c0 /sys/external/bsd/drm2/include/linux | |
| parent | 8d560b6cdce110d89295816812954f9534523fcf (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.h | 25 |
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; }; |
