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

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

#if defined(ARCH_SET_GS) || (defined(HAVE_DECL_ARCH_SET_GS) && HAVE_DECL_ARCH_SET_GS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARCH_SET_GS) == (0x1001), "ARCH_SET_GS != 0x1001");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARCH_SET_GS 0x1001
#endif
#if defined(ARCH_SET_FS) || (defined(HAVE_DECL_ARCH_SET_FS) && HAVE_DECL_ARCH_SET_FS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARCH_SET_FS) == (0x1002), "ARCH_SET_FS != 0x1002");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARCH_SET_FS 0x1002
#endif
#if defined(ARCH_GET_FS) || (defined(HAVE_DECL_ARCH_GET_FS) && HAVE_DECL_ARCH_GET_FS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARCH_GET_FS) == (0x1003), "ARCH_GET_FS != 0x1003");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARCH_GET_FS 0x1003
#endif
#if defined(ARCH_GET_GS) || (defined(HAVE_DECL_ARCH_GET_GS) && HAVE_DECL_ARCH_GET_GS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARCH_GET_GS) == (0x1004), "ARCH_GET_GS != 0x1004");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARCH_GET_GS 0x1004
#endif
#if defined(ARCH_GET_CPUID) || (defined(HAVE_DECL_ARCH_GET_CPUID) && HAVE_DECL_ARCH_GET_CPUID)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARCH_GET_CPUID) == (0x1011), "ARCH_GET_CPUID != 0x1011");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARCH_GET_CPUID 0x1011
#endif
#if defined(ARCH_SET_CPUID) || (defined(HAVE_DECL_ARCH_SET_CPUID) && HAVE_DECL_ARCH_SET_CPUID)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARCH_SET_CPUID) == (0x1012), "ARCH_SET_CPUID != 0x1012");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARCH_SET_CPUID 0x1012
#endif
#if defined(ARCH_MAP_VDSO_X32) || (defined(HAVE_DECL_ARCH_MAP_VDSO_X32) && HAVE_DECL_ARCH_MAP_VDSO_X32)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARCH_MAP_VDSO_X32) == (0x2001), "ARCH_MAP_VDSO_X32 != 0x2001");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARCH_MAP_VDSO_X32 0x2001
#endif
#if defined(ARCH_MAP_VDSO_32) || (defined(HAVE_DECL_ARCH_MAP_VDSO_32) && HAVE_DECL_ARCH_MAP_VDSO_32)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARCH_MAP_VDSO_32) == (0x2002), "ARCH_MAP_VDSO_32 != 0x2002");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARCH_MAP_VDSO_32 0x2002
#endif
#if defined(ARCH_MAP_VDSO_64) || (defined(HAVE_DECL_ARCH_MAP_VDSO_64) && HAVE_DECL_ARCH_MAP_VDSO_64)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARCH_MAP_VDSO_64) == (0x2003), "ARCH_MAP_VDSO_64 != 0x2003");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARCH_MAP_VDSO_64 0x2003
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat archvals in mpers mode

# else

static
const struct xlat archvals[] = {
 XLAT(ARCH_SET_GS),
 XLAT(ARCH_SET_FS),
 XLAT(ARCH_GET_FS),
 XLAT(ARCH_GET_GS),
 XLAT(ARCH_GET_CPUID),
 XLAT(ARCH_SET_CPUID),
 XLAT(ARCH_MAP_VDSO_X32),
 XLAT(ARCH_MAP_VDSO_32),
 XLAT(ARCH_MAP_VDSO_64),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
