summaryrefslogtreecommitdiffstats
path: root/sys/amd64/include/atomic.h
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2003-11-21 03:02:00 +0000
committerpeter <peter@FreeBSD.org>2003-11-21 03:02:00 +0000
commitaefda7ad568c8310cab954248c6703f913ae46f8 (patch)
tree779c5488e9da51760220a217de1843de9e844d6c /sys/amd64/include/atomic.h
parent8bb74c49aa521edbbb542e8e7c613a47c82a2007 (diff)
downloadFreeBSD-src-aefda7ad568c8310cab954248c6703f913ae46f8.zip
FreeBSD-src-aefda7ad568c8310cab954248c6703f913ae46f8.tar.gz
Cosmetic and/or trivial sync up with i386.
Approved by: re (rwatson)
Diffstat (limited to 'sys/amd64/include/atomic.h')
-rw-r--r--sys/amd64/include/atomic.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/sys/amd64/include/atomic.h b/sys/amd64/include/atomic.h
index bc10631..cbee271 100644
--- a/sys/amd64/include/atomic.h
+++ b/sys/amd64/include/atomic.h
@@ -99,7 +99,8 @@ atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v)\
__asm __volatile(__XSTRING(MPLOCKED) OP \
: "+m" (*p) \
: CONS (V)); \
-}
+} \
+struct __hack
#else /* !__GNUC__ */
@@ -150,7 +151,7 @@ atomic_cmpset_long(volatile u_long *dst, u_long exp, u_long src)
" movzbq %%al,%0 ; "
"1: "
"# atomic_cmpset_long"
- : "+a" (res) /* 0 (result) %rax, XXX check */
+ : "+a" (res) /* 0 (result) */
: "r" (src), /* 1 */
"m" (*(dst)) /* 2 */
: "memory");
@@ -185,7 +186,8 @@ atomic_store_rel_##TYPE(volatile u_##TYPE *p, u_##TYPE v)\
: "+m" (*p), /* 0 */ \
"+r" (v) /* 1 */ \
: : "memory"); \
-}
+} \
+struct __hack
#else /* !defined(__GNUC__) */
@@ -330,7 +332,11 @@ atomic_cmpset_ptr(volatile void *dst, void *exp, void *src)
static __inline void *
atomic_load_acq_ptr(volatile void *p)
{
- return (void *)atomic_load_acq_long((volatile u_long *)p);
+ /*
+ * The apparently-bogus cast to intptr_t in the following is to
+ * avoid a warning from "gcc -Wbad-function-cast".
+ */
+ return ((void *)(intptr_t)atomic_load_acq_long((volatile u_long *)p));
}
static __inline void
OpenPOWER on IntegriCloud