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

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

#if defined(PR_MCE_KILL_CLEAR) || (defined(HAVE_DECL_PR_MCE_KILL_CLEAR) && HAVE_DECL_PR_MCE_KILL_CLEAR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((PR_MCE_KILL_CLEAR) == (0), "PR_MCE_KILL_CLEAR != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define PR_MCE_KILL_CLEAR 0
#endif
#if defined(PR_MCE_KILL_SET) || (defined(HAVE_DECL_PR_MCE_KILL_SET) && HAVE_DECL_PR_MCE_KILL_SET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((PR_MCE_KILL_SET) == (1), "PR_MCE_KILL_SET != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define PR_MCE_KILL_SET 1
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat pr_mce_kill in mpers mode

# else

static
const struct xlat pr_mce_kill[] = {
 XLAT(PR_MCE_KILL_CLEAR),
 XLAT(PR_MCE_KILL_SET),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
