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

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

#if defined(SMC_DIAG_MODE_SMCR) || (defined(HAVE_DECL_SMC_DIAG_MODE_SMCR) && HAVE_DECL_SMC_DIAG_MODE_SMCR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SMC_DIAG_MODE_SMCR) == (0), "SMC_DIAG_MODE_SMCR != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SMC_DIAG_MODE_SMCR 0
#endif
#if defined(SMC_DIAG_MODE_FALLBACK_TCP) || (defined(HAVE_DECL_SMC_DIAG_MODE_FALLBACK_TCP) && HAVE_DECL_SMC_DIAG_MODE_FALLBACK_TCP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SMC_DIAG_MODE_FALLBACK_TCP) == (1), "SMC_DIAG_MODE_FALLBACK_TCP != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SMC_DIAG_MODE_FALLBACK_TCP 1
#endif
#if defined(SMC_DIAG_MODE_SMCD) || (defined(HAVE_DECL_SMC_DIAG_MODE_SMCD) && HAVE_DECL_SMC_DIAG_MODE_SMCD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SMC_DIAG_MODE_SMCD) == (2), "SMC_DIAG_MODE_SMCD != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SMC_DIAG_MODE_SMCD 2
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat smc_diag_mode in mpers mode

# else

static
const struct xlat smc_diag_mode[] = {
 [SMC_DIAG_MODE_SMCR] = XLAT(SMC_DIAG_MODE_SMCR),
 [SMC_DIAG_MODE_FALLBACK_TCP] = XLAT(SMC_DIAG_MODE_FALLBACK_TCP),
 [SMC_DIAG_MODE_SMCD] = XLAT(SMC_DIAG_MODE_SMCD),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
