|
Packit |
fe9d6e |
/*
|
|
Packit |
fe9d6e |
* Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved.
|
|
Packit |
fe9d6e |
*
|
|
Packit |
fe9d6e |
* This file is covered by the GNU general public license, version 2.
|
|
Packit |
fe9d6e |
* see COPYING for details.
|
|
Packit |
fe9d6e |
*/
|
|
Packit |
fe9d6e |
|
|
Packit |
fe9d6e |
/* This generates a compilable program. But it is really meant to be */
|
|
Packit |
fe9d6e |
/* be used only with cc -E, to inspect the expensions generated by */
|
|
Packit |
fe9d6e |
/* primitives. */
|
|
Packit |
fe9d6e |
|
|
Packit |
fe9d6e |
/* The result will not link or run. */
|
|
Packit |
fe9d6e |
|
|
Packit |
fe9d6e |
#include <stdlib.h> /* for exit() */
|
|
Packit |
fe9d6e |
|
|
Packit |
fe9d6e |
void XSIZE_list_atomicXX(void)
|
|
Packit |
fe9d6e |
{
|
|
Packit |
fe9d6e |
# if defined(AO_HAVE_XSIZE_loadXX) || defined(AO_HAVE_XSIZE_storeXX) \
|
|
Packit |
fe9d6e |
|| defined(AO_HAVE_XSIZE_fetch_and_addXX) \
|
|
Packit |
fe9d6e |
|| defined(AO_HAVE_XSIZE_fetch_and_add1XX) \
|
|
Packit |
fe9d6e |
|| defined(AO_HAVE_XSIZE_andXX) \
|
|
Packit |
fe9d6e |
|| defined(AO_HAVE_XSIZE_compare_and_swapXX) \
|
|
Packit |
fe9d6e |
|| defined(AO_HAVE_XSIZE_fetch_compare_and_swapXX)
|
|
Packit |
fe9d6e |
static volatile XCTYPE val /* = 0 */;
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
# if defined(AO_HAVE_XSIZE_compare_and_swapXX) \
|
|
Packit |
fe9d6e |
|| defined(AO_HAVE_XSIZE_fetch_compare_and_swapXX)
|
|
Packit |
fe9d6e |
static XCTYPE oldval /* = 0 */;
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
# if defined(AO_HAVE_XSIZE_storeXX) \
|
|
Packit |
fe9d6e |
|| defined(AO_HAVE_XSIZE_compare_and_swapXX) \
|
|
Packit |
fe9d6e |
|| defined(AO_HAVE_XSIZE_fetch_compare_and_swapXX)
|
|
Packit |
fe9d6e |
static XCTYPE newval /* = 0 */;
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
# if defined(AO_HAVE_test_and_setXX)
|
|
Packit |
fe9d6e |
AO_TS_t ts;
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
# if defined(AO_HAVE_XSIZE_fetch_and_addXX) || defined(AO_HAVE_XSIZE_andXX) \
|
|
Packit |
fe9d6e |
|| defined(AO_HAVE_XSIZE_orXX) || defined(AO_HAVE_XSIZE_xorXX)
|
|
Packit |
fe9d6e |
static XCTYPE incr /* = 0 */;
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
|
|
Packit |
fe9d6e |
# if defined(AO_HAVE_nopXX)
|
|
Packit |
fe9d6e |
(void)"AO_nopXX(): ";
|
|
Packit |
fe9d6e |
AO_nopXX();
|
|
Packit |
fe9d6e |
# else
|
|
Packit |
fe9d6e |
(void)"No AO_nopXX";
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
|
|
Packit |
fe9d6e |
# ifdef AO_HAVE_XSIZE_loadXX
|
|
Packit |
fe9d6e |
(void)"AO_XSIZE_loadXX(&val):";
|
|
Packit |
fe9d6e |
(void)AO_XSIZE_loadXX(&val;;
|
|
Packit |
fe9d6e |
# else
|
|
Packit |
fe9d6e |
(void)"No AO_XSIZE_loadXX";
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
# ifdef AO_HAVE_XSIZE_storeXX
|
|
Packit |
fe9d6e |
(void)"AO_XSIZE_storeXX(&val, newval):";
|
|
Packit |
fe9d6e |
AO_XSIZE_storeXX(&val, newval);
|
|
Packit |
fe9d6e |
# else
|
|
Packit |
fe9d6e |
(void)"No AO_XSIZE_storeXX";
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
# ifdef AO_HAVE_XSIZE_fetch_and_addXX
|
|
Packit |
fe9d6e |
(void)"AO_XSIZE_fetch_and_addXX(&val, incr):";
|
|
Packit |
fe9d6e |
(void)AO_XSIZE_fetch_and_addXX(&val, incr);
|
|
Packit |
fe9d6e |
# else
|
|
Packit |
fe9d6e |
(void)"No AO_XSIZE_fetch_and_addXX";
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
# ifdef AO_HAVE_XSIZE_fetch_and_add1XX
|
|
Packit |
fe9d6e |
(void)"AO_XSIZE_fetch_and_add1XX(&val):";
|
|
Packit |
fe9d6e |
(void)AO_XSIZE_fetch_and_add1XX(&val;;
|
|
Packit |
fe9d6e |
# else
|
|
Packit |
fe9d6e |
(void)"No AO_XSIZE_fetch_and_add1XX";
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
# ifdef AO_HAVE_XSIZE_fetch_and_sub1XX
|
|
Packit |
fe9d6e |
(void)"AO_XSIZE_fetch_and_sub1XX(&val):";
|
|
Packit |
fe9d6e |
(void)AO_XSIZE_fetch_and_sub1XX(&val;;
|
|
Packit |
fe9d6e |
# else
|
|
Packit |
fe9d6e |
(void)"No AO_XSIZE_fetch_and_sub1XX";
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
# ifdef AO_HAVE_XSIZE_andXX
|
|
Packit |
fe9d6e |
(void)"AO_XSIZE_andXX(&val, incr):";
|
|
Packit |
fe9d6e |
AO_XSIZE_andXX(&val, incr);
|
|
Packit |
fe9d6e |
# else
|
|
Packit |
fe9d6e |
(void)"No AO_XSIZE_andXX";
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
# ifdef AO_HAVE_XSIZE_orXX
|
|
Packit |
fe9d6e |
(void)"AO_XSIZE_orXX(&val, incr):";
|
|
Packit |
fe9d6e |
AO_XSIZE_orXX(&val, incr);
|
|
Packit |
fe9d6e |
# else
|
|
Packit |
fe9d6e |
(void)"No AO_XSIZE_orXX";
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
# ifdef AO_HAVE_XSIZE_xorXX
|
|
Packit |
fe9d6e |
(void)"AO_XSIZE_xorXX(&val, incr):";
|
|
Packit |
fe9d6e |
AO_XSIZE_xorXX(&val, incr);
|
|
Packit |
fe9d6e |
# else
|
|
Packit |
fe9d6e |
(void)"No AO_XSIZE_xorXX";
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
# ifdef AO_HAVE_XSIZE_compare_and_swapXX
|
|
Packit |
fe9d6e |
(void)"AO_XSIZE_compare_and_swapXX(&val, oldval, newval):";
|
|
Packit |
fe9d6e |
if (!AO_XSIZE_compare_and_swapXX(&val, oldval, newval))
|
|
Packit |
fe9d6e |
exit(1);
|
|
Packit |
fe9d6e |
# else
|
|
Packit |
fe9d6e |
(void)"No AO_XSIZE_compare_and_swapXX";
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
/* TODO: Add AO_compare_double_and_swap_doubleXX */
|
|
Packit |
fe9d6e |
/* TODO: Add AO_compare_and_swap_doubleXX */
|
|
Packit |
fe9d6e |
# ifdef AO_HAVE_XSIZE_fetch_compare_and_swapXX
|
|
Packit |
fe9d6e |
(void)"AO_XSIZE_fetch_compare_and_swapXX(&val, oldval, newval):";
|
|
Packit |
fe9d6e |
if (AO_XSIZE_fetch_compare_and_swapXX(&val, oldval, newval) != oldval)
|
|
Packit |
fe9d6e |
exit(1);
|
|
Packit |
fe9d6e |
# else
|
|
Packit |
fe9d6e |
(void)"No AO_XSIZE_fetch_compare_and_swapXX";
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
|
|
Packit |
fe9d6e |
# if defined(AO_HAVE_test_and_setXX)
|
|
Packit |
fe9d6e |
(void)"AO_test_and_setXX(&ts):";
|
|
Packit |
fe9d6e |
(void)AO_test_and_setXX(&ts);
|
|
Packit |
fe9d6e |
# else
|
|
Packit |
fe9d6e |
(void)"No AO_test_and_setXX";
|
|
Packit |
fe9d6e |
# endif
|
|
Packit |
fe9d6e |
}
|