/* Generated by ./xlat/gen.sh from ./xlat/sigaltstack_flags.in; do not edit. */

#include "gcc_compat.h"
#include "static_assert.h"

#if defined(SS_ONSTACK) || (defined(HAVE_DECL_SS_ONSTACK) && HAVE_DECL_SS_ONSTACK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SS_ONSTACK) == (1), "SS_ONSTACK != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SS_ONSTACK 1
#endif
#if defined(SS_DISABLE) || (defined(HAVE_DECL_SS_DISABLE) && HAVE_DECL_SS_DISABLE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SS_DISABLE) == (2), "SS_DISABLE != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SS_DISABLE 2
#endif
#if defined(SS_AUTODISARM) || (defined(HAVE_DECL_SS_AUTODISARM) && HAVE_DECL_SS_AUTODISARM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SS_AUTODISARM) == ((1U << 31)), "SS_AUTODISARM != (1U << 31)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SS_AUTODISARM (1U << 31)
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

extern const struct xlat sigaltstack_flags[];

# else

#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
static
#  endif
const struct xlat sigaltstack_flags[] = {
 XLAT(SS_ONSTACK),
 XLAT(SS_DISABLE),
 XLAT(SS_AUTODISARM),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
