#include "generalize-small.h"
+/* Compare_double_and_swap_double based on double_compare_and_swap. */
+#ifdef AO_HAVE_DOUBLE_PTR_STORAGE
+# if defined(AO_HAVE_double_compare_and_swap) \
+ && !defined(AO_HAVE_compare_double_and_swap_double)
+ AO_INLINE int
+ AO_compare_double_and_swap_double(volatile AO_double_t *addr,
+ AO_t old_val1, AO_t old_val2,
+ AO_t new_val1, AO_t new_val2)
+ {
+ AO_double_t old_w;
+ AO_double_t new_w;
+ old_w.AO_val1 = old_val1;
+ old_w.AO_val2 = old_val2;
+ new_w.AO_val1 = new_val1;
+ new_w.AO_val2 = new_val2;
+ return AO_double_compare_and_swap(addr, old_w, new_w);
+ }
+# define AO_HAVE_compare_double_and_swap_double
+# endif
+# if defined(AO_HAVE_double_compare_and_swap_full) \
+ && !defined(AO_HAVE_compare_double_and_swap_double_full)
+ AO_INLINE int
+ AO_compare_double_and_swap_double_full(volatile AO_double_t *addr,
+ AO_t old_val1, AO_t old_val2,
+ AO_t new_val1, AO_t new_val2)
+ {
+ AO_double_t old_w;
+ AO_double_t new_w;
+ old_w.AO_val1 = old_val1;
+ old_w.AO_val2 = old_val2;
+ new_w.AO_val1 = new_val1;
+ new_w.AO_val2 = new_val2;
+ return AO_double_compare_and_swap_full(addr, old_w, new_w);
+ }
+# define AO_HAVE_compare_double_and_swap_double_full
+# endif
+#endif /* AO_HAVE_DOUBLE_PTR_STORAGE */
+
/* Compare_double_and_swap_double */
#if defined(AO_HAVE_compare_double_and_swap_double) \
&& defined(AO_HAVE_nop_full) \
return !result; /* if succeded, return 1 else 0 */
}
# define AO_HAVE_double_compare_and_swap
-
- /* TODO: Move to generalize.h. */
- AO_INLINE int
- AO_compare_double_and_swap_double(volatile AO_double_t *addr,
- AO_t old_val1, AO_t old_val2,
- AO_t new_val1, AO_t new_val2)
- {
- AO_double_t old_w;
- AO_double_t new_w;
-
- old_w.AO_val1 = old_val1;
- old_w.AO_val2 = old_val2;
- new_w.AO_val1 = new_val1;
- new_w.AO_val2 = new_val2;
- return AO_double_compare_and_swap(addr, old_w, new_w);
- }
-# define AO_HAVE_compare_double_and_swap_double
#endif /* AO_ARM_HAVE_LDREXD */
#else
old_val.AO_whole) == old_val.AO_whole;
}
# define AO_HAVE_double_compare_and_swap_full
-
- /* TODO: Move to generalize.h. */
- AO_INLINE int
- AO_compare_double_and_swap_double_full(volatile AO_double_t *addr,
- AO_t old_val1, AO_t old_val2,
- AO_t new_val1, AO_t new_val2)
- {
- AO_double_t old_w;
- AO_double_t new_w;
-
- old_w.AO_val1 = old_val1;
- old_w.AO_val2 = old_val2;
- new_w.AO_val1 = new_val1;
- new_w.AO_val2 = new_val2;
- return AO_double_compare_and_swap_full(addr, old_w, new_w);
- }
-# define AO_HAVE_compare_double_and_swap_double_full
-
#endif /* AO_ASSUME_VISTA */
#define AO_T_IS_INT