summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2000-10-25 21:56:16 +0000
committerjhb <jhb@FreeBSD.org>2000-10-25 21:56:16 +0000
commit03e61574485a10712763b55efc3e1f4c86051a15 (patch)
tree781c1d8b1edc714e5cda6226c89dfee532f535e6 /sys
parent220ad0d5b56a8c3af955b737c3b948bd81ebdb40 (diff)
downloadFreeBSD-src-03e61574485a10712763b55efc3e1f4c86051a15.zip
FreeBSD-src-03e61574485a10712763b55efc3e1f4c86051a15.tar.gz
- Add atomic_cmpset_{acq_,rel_,}_long
- Add in atomic operations for 8-bit, 16-bit, and 32-bit integers
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/include/atomic.h52
-rw-r--r--sys/i386/include/atomic.h52
2 files changed, 104 insertions, 0 deletions
diff --git a/sys/amd64/include/atomic.h b/sys/amd64/include/atomic.h
index b791da9..f6da2d1 100644
--- a/sys/amd64/include/atomic.h
+++ b/sys/amd64/include/atomic.h
@@ -151,8 +151,11 @@ atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src)
}
#endif /* defined(I386_CPU) */
+#define atomic_cmpset_long atomic_cmpset_int
#define atomic_cmpset_acq_int atomic_cmpset_int
#define atomic_cmpset_rel_int atomic_cmpset_int
+#define atomic_cmpset_acq_long atomic_cmpset_acq_int
+#define atomic_cmpset_rel_long atomic_cmpset_rel_int
#else
/* gcc <= 2.8 version */
@@ -358,4 +361,53 @@ atomic_readandclear_long(volatile u_long *addr)
}
#endif
+#define atomic_set_8 atomic_set_char
+#define atomic_set_acq_8 atomic_set_acq_char
+#define atomic_set_rel_8 atomic_set_rel_char
+#define atomic_clear_8 atomic_clear_char
+#define atomic_clear_acq_8 atomic_clear_acq_char
+#define atomic_clear_rel_8 atomic_clear_rel_char
+#define atomic_add_8 atomic_add_char
+#define atomic_add_acq_8 atomic_add_acq_char
+#define atomic_add_rel_8 atomic_add_rel_char
+#define atomic_subtract_8 atomic_subtract_char
+#define atomic_subtract_acq_8 atomic_subtract_acq_char
+#define atomic_subtract_rel_8 atomic_subtract_rel_char
+#define atomic_load_acq_8 atomic_load_acq_char
+#define atomic_store_rel_8 atomic_store_rel_char
+
+#define atomic_set_16 atomic_set_short
+#define atomic_set_acq_16 atomic_set_acq_short
+#define atomic_set_rel_16 atomic_set_rel_short
+#define atomic_clear_16 atomic_clear_short
+#define atomic_clear_acq_16 atomic_clear_acq_short
+#define atomic_clear_rel_16 atomic_clear_rel_short
+#define atomic_add_16 atomic_add_short
+#define atomic_add_acq_16 atomic_add_acq_short
+#define atomic_add_rel_16 atomic_add_rel_short
+#define atomic_subtract_16 atomic_subtract_short
+#define atomic_subtract_acq_16 atomic_subtract_acq_short
+#define atomic_subtract_rel_16 atomic_subtract_rel_short
+#define atomic_load_acq_16 atomic_load_acq_short
+#define atomic_store_rel_16 atomic_store_rel_short
+
+#define atomic_set_32 atomic_set_int
+#define atomic_set_acq_32 atomic_set_acq_int
+#define atomic_set_rel_32 atomic_set_rel_int
+#define atomic_clear_32 atomic_clear_int
+#define atomic_clear_acq_32 atomic_clear_acq_int
+#define atomic_clear_rel_32 atomic_clear_rel_int
+#define atomic_add_32 atomic_add_int
+#define atomic_add_acq_32 atomic_add_acq_int
+#define atomic_add_rel_32 atomic_add_rel_int
+#define atomic_subtract_32 atomic_subtract_int
+#define atomic_subtract_acq_32 atomic_subtract_acq_int
+#define atomic_subtract_rel_32 atomic_subtract_rel_int
+#define atomic_load_acq_32 atomic_load_acq_int
+#define atomic_store_rel_32 atomic_store_rel_int
+#define atomic_cmpset_32 atomic_cmpset_int
+#define atomic_cmpset_acq_32 atomic_cmpset_acq_int
+#define atomic_cmpset_rel_32 atomic_cmpset_rel_int
+#define atomic_readandclear_32 atomic_readandclear_int
+
#endif /* ! _MACHINE_ATOMIC_H_ */
diff --git a/sys/i386/include/atomic.h b/sys/i386/include/atomic.h
index b791da9..f6da2d1 100644
--- a/sys/i386/include/atomic.h
+++ b/sys/i386/include/atomic.h
@@ -151,8 +151,11 @@ atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src)
}
#endif /* defined(I386_CPU) */
+#define atomic_cmpset_long atomic_cmpset_int
#define atomic_cmpset_acq_int atomic_cmpset_int
#define atomic_cmpset_rel_int atomic_cmpset_int
+#define atomic_cmpset_acq_long atomic_cmpset_acq_int
+#define atomic_cmpset_rel_long atomic_cmpset_rel_int
#else
/* gcc <= 2.8 version */
@@ -358,4 +361,53 @@ atomic_readandclear_long(volatile u_long *addr)
}
#endif
+#define atomic_set_8 atomic_set_char
+#define atomic_set_acq_8 atomic_set_acq_char
+#define atomic_set_rel_8 atomic_set_rel_char
+#define atomic_clear_8 atomic_clear_char
+#define atomic_clear_acq_8 atomic_clear_acq_char
+#define atomic_clear_rel_8 atomic_clear_rel_char
+#define atomic_add_8 atomic_add_char
+#define atomic_add_acq_8 atomic_add_acq_char
+#define atomic_add_rel_8 atomic_add_rel_char
+#define atomic_subtract_8 atomic_subtract_char
+#define atomic_subtract_acq_8 atomic_subtract_acq_char
+#define atomic_subtract_rel_8 atomic_subtract_rel_char
+#define atomic_load_acq_8 atomic_load_acq_char
+#define atomic_store_rel_8 atomic_store_rel_char
+
+#define atomic_set_16 atomic_set_short
+#define atomic_set_acq_16 atomic_set_acq_short
+#define atomic_set_rel_16 atomic_set_rel_short
+#define atomic_clear_16 atomic_clear_short
+#define atomic_clear_acq_16 atomic_clear_acq_short
+#define atomic_clear_rel_16 atomic_clear_rel_short
+#define atomic_add_16 atomic_add_short
+#define atomic_add_acq_16 atomic_add_acq_short
+#define atomic_add_rel_16 atomic_add_rel_short
+#define atomic_subtract_16 atomic_subtract_short
+#define atomic_subtract_acq_16 atomic_subtract_acq_short
+#define atomic_subtract_rel_16 atomic_subtract_rel_short
+#define atomic_load_acq_16 atomic_load_acq_short
+#define atomic_store_rel_16 atomic_store_rel_short
+
+#define atomic_set_32 atomic_set_int
+#define atomic_set_acq_32 atomic_set_acq_int
+#define atomic_set_rel_32 atomic_set_rel_int
+#define atomic_clear_32 atomic_clear_int
+#define atomic_clear_acq_32 atomic_clear_acq_int
+#define atomic_clear_rel_32 atomic_clear_rel_int
+#define atomic_add_32 atomic_add_int
+#define atomic_add_acq_32 atomic_add_acq_int
+#define atomic_add_rel_32 atomic_add_rel_int
+#define atomic_subtract_32 atomic_subtract_int
+#define atomic_subtract_acq_32 atomic_subtract_acq_int
+#define atomic_subtract_rel_32 atomic_subtract_rel_int
+#define atomic_load_acq_32 atomic_load_acq_int
+#define atomic_store_rel_32 atomic_store_rel_int
+#define atomic_cmpset_32 atomic_cmpset_int
+#define atomic_cmpset_acq_32 atomic_cmpset_acq_int
+#define atomic_cmpset_rel_32 atomic_cmpset_rel_int
+#define atomic_readandclear_32 atomic_readandclear_int
+
#endif /* ! _MACHINE_ATOMIC_H_ */
OpenPOWER on IntegriCloud