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

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

#if defined(KVM_EXIT_UNKNOWN) || (defined(HAVE_DECL_KVM_EXIT_UNKNOWN) && HAVE_DECL_KVM_EXIT_UNKNOWN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_UNKNOWN) == (0), "KVM_EXIT_UNKNOWN != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_UNKNOWN 0
#endif
#if defined(KVM_EXIT_EXCEPTION) || (defined(HAVE_DECL_KVM_EXIT_EXCEPTION) && HAVE_DECL_KVM_EXIT_EXCEPTION)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_EXCEPTION) == (1), "KVM_EXIT_EXCEPTION != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_EXCEPTION 1
#endif
#if defined(KVM_EXIT_IO) || (defined(HAVE_DECL_KVM_EXIT_IO) && HAVE_DECL_KVM_EXIT_IO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_IO) == (2), "KVM_EXIT_IO != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_IO 2
#endif
#if defined(KVM_EXIT_HYPERCALL) || (defined(HAVE_DECL_KVM_EXIT_HYPERCALL) && HAVE_DECL_KVM_EXIT_HYPERCALL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_HYPERCALL) == (3), "KVM_EXIT_HYPERCALL != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_HYPERCALL 3
#endif
#if defined(KVM_EXIT_DEBUG) || (defined(HAVE_DECL_KVM_EXIT_DEBUG) && HAVE_DECL_KVM_EXIT_DEBUG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_DEBUG) == (4), "KVM_EXIT_DEBUG != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_DEBUG 4
#endif
#if defined(KVM_EXIT_HLT) || (defined(HAVE_DECL_KVM_EXIT_HLT) && HAVE_DECL_KVM_EXIT_HLT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_HLT) == (5), "KVM_EXIT_HLT != 5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_HLT 5
#endif
#if defined(KVM_EXIT_MMIO) || (defined(HAVE_DECL_KVM_EXIT_MMIO) && HAVE_DECL_KVM_EXIT_MMIO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_MMIO) == (6), "KVM_EXIT_MMIO != 6");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_MMIO 6
#endif
#if defined(KVM_EXIT_IRQ_WINDOW_OPEN) || (defined(HAVE_DECL_KVM_EXIT_IRQ_WINDOW_OPEN) && HAVE_DECL_KVM_EXIT_IRQ_WINDOW_OPEN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_IRQ_WINDOW_OPEN) == (7), "KVM_EXIT_IRQ_WINDOW_OPEN != 7");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_IRQ_WINDOW_OPEN 7
#endif
#if defined(KVM_EXIT_SHUTDOWN) || (defined(HAVE_DECL_KVM_EXIT_SHUTDOWN) && HAVE_DECL_KVM_EXIT_SHUTDOWN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_SHUTDOWN) == (8), "KVM_EXIT_SHUTDOWN != 8");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_SHUTDOWN 8
#endif
#if defined(KVM_EXIT_FAIL_ENTRY) || (defined(HAVE_DECL_KVM_EXIT_FAIL_ENTRY) && HAVE_DECL_KVM_EXIT_FAIL_ENTRY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_FAIL_ENTRY) == (9), "KVM_EXIT_FAIL_ENTRY != 9");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_FAIL_ENTRY 9
#endif
#if defined(KVM_EXIT_INTR) || (defined(HAVE_DECL_KVM_EXIT_INTR) && HAVE_DECL_KVM_EXIT_INTR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_INTR) == (10), "KVM_EXIT_INTR != 10");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_INTR 10
#endif
#if defined(KVM_EXIT_SET_TPR) || (defined(HAVE_DECL_KVM_EXIT_SET_TPR) && HAVE_DECL_KVM_EXIT_SET_TPR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_SET_TPR) == (11), "KVM_EXIT_SET_TPR != 11");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_SET_TPR 11
#endif
#if defined(KVM_EXIT_TPR_ACCESS) || (defined(HAVE_DECL_KVM_EXIT_TPR_ACCESS) && HAVE_DECL_KVM_EXIT_TPR_ACCESS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_TPR_ACCESS) == (12), "KVM_EXIT_TPR_ACCESS != 12");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_TPR_ACCESS 12
#endif
#if defined(KVM_EXIT_S390_SIEIC) || (defined(HAVE_DECL_KVM_EXIT_S390_SIEIC) && HAVE_DECL_KVM_EXIT_S390_SIEIC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_S390_SIEIC) == (13), "KVM_EXIT_S390_SIEIC != 13");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_S390_SIEIC 13
#endif
#if defined(KVM_EXIT_S390_RESET) || (defined(HAVE_DECL_KVM_EXIT_S390_RESET) && HAVE_DECL_KVM_EXIT_S390_RESET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_S390_RESET) == (14), "KVM_EXIT_S390_RESET != 14");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_S390_RESET 14
#endif
#if defined(KVM_EXIT_DCR) || (defined(HAVE_DECL_KVM_EXIT_DCR) && HAVE_DECL_KVM_EXIT_DCR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_DCR) == (15), "KVM_EXIT_DCR != 15");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_DCR 15
#endif
#if defined(KVM_EXIT_NMI) || (defined(HAVE_DECL_KVM_EXIT_NMI) && HAVE_DECL_KVM_EXIT_NMI)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_NMI) == (16), "KVM_EXIT_NMI != 16");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_NMI 16
#endif
#if defined(KVM_EXIT_INTERNAL_ERROR) || (defined(HAVE_DECL_KVM_EXIT_INTERNAL_ERROR) && HAVE_DECL_KVM_EXIT_INTERNAL_ERROR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_INTERNAL_ERROR) == (17), "KVM_EXIT_INTERNAL_ERROR != 17");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_INTERNAL_ERROR 17
#endif
#if defined(KVM_EXIT_OSI) || (defined(HAVE_DECL_KVM_EXIT_OSI) && HAVE_DECL_KVM_EXIT_OSI)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_OSI) == (18), "KVM_EXIT_OSI != 18");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_OSI 18
#endif
#if defined(KVM_EXIT_PAPR_HCALL) || (defined(HAVE_DECL_KVM_EXIT_PAPR_HCALL) && HAVE_DECL_KVM_EXIT_PAPR_HCALL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_PAPR_HCALL) == (19), "KVM_EXIT_PAPR_HCALL != 19");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_PAPR_HCALL 19
#endif
#if defined(KVM_EXIT_S390_UCONTROL) || (defined(HAVE_DECL_KVM_EXIT_S390_UCONTROL) && HAVE_DECL_KVM_EXIT_S390_UCONTROL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_S390_UCONTROL) == (20), "KVM_EXIT_S390_UCONTROL != 20");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_S390_UCONTROL 20
#endif
#if defined(KVM_EXIT_WATCHDOG) || (defined(HAVE_DECL_KVM_EXIT_WATCHDOG) && HAVE_DECL_KVM_EXIT_WATCHDOG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_WATCHDOG) == (21), "KVM_EXIT_WATCHDOG != 21");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_WATCHDOG 21
#endif
#if defined(KVM_EXIT_S390_TSCH) || (defined(HAVE_DECL_KVM_EXIT_S390_TSCH) && HAVE_DECL_KVM_EXIT_S390_TSCH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_S390_TSCH) == (22), "KVM_EXIT_S390_TSCH != 22");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_S390_TSCH 22
#endif
#if defined(KVM_EXIT_EPR) || (defined(HAVE_DECL_KVM_EXIT_EPR) && HAVE_DECL_KVM_EXIT_EPR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_EPR) == (23), "KVM_EXIT_EPR != 23");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_EPR 23
#endif
#if defined(KVM_EXIT_SYSTEM_EVENT) || (defined(HAVE_DECL_KVM_EXIT_SYSTEM_EVENT) && HAVE_DECL_KVM_EXIT_SYSTEM_EVENT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_SYSTEM_EVENT) == (24), "KVM_EXIT_SYSTEM_EVENT != 24");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_SYSTEM_EVENT 24
#endif
#if defined(KVM_EXIT_S390_STSI) || (defined(HAVE_DECL_KVM_EXIT_S390_STSI) && HAVE_DECL_KVM_EXIT_S390_STSI)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_S390_STSI) == (25), "KVM_EXIT_S390_STSI != 25");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_S390_STSI 25
#endif
#if defined(KVM_EXIT_IOAPIC_EOI) || (defined(HAVE_DECL_KVM_EXIT_IOAPIC_EOI) && HAVE_DECL_KVM_EXIT_IOAPIC_EOI)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_IOAPIC_EOI) == (26), "KVM_EXIT_IOAPIC_EOI != 26");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_IOAPIC_EOI 26
#endif
#if defined(KVM_EXIT_HYPERV) || (defined(HAVE_DECL_KVM_EXIT_HYPERV) && HAVE_DECL_KVM_EXIT_HYPERV)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KVM_EXIT_HYPERV) == (27), "KVM_EXIT_HYPERV != 27");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KVM_EXIT_HYPERV 27
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat kvm_exit_reason in mpers mode

# else

static
const struct xlat kvm_exit_reason[] = {
 [KVM_EXIT_UNKNOWN] = XLAT(KVM_EXIT_UNKNOWN),
 [KVM_EXIT_EXCEPTION] = XLAT(KVM_EXIT_EXCEPTION),
 [KVM_EXIT_IO] = XLAT(KVM_EXIT_IO),
 [KVM_EXIT_HYPERCALL] = XLAT(KVM_EXIT_HYPERCALL),
 [KVM_EXIT_DEBUG] = XLAT(KVM_EXIT_DEBUG),
 [KVM_EXIT_HLT] = XLAT(KVM_EXIT_HLT),
 [KVM_EXIT_MMIO] = XLAT(KVM_EXIT_MMIO),
 [KVM_EXIT_IRQ_WINDOW_OPEN] = XLAT(KVM_EXIT_IRQ_WINDOW_OPEN),
 [KVM_EXIT_SHUTDOWN] = XLAT(KVM_EXIT_SHUTDOWN),
 [KVM_EXIT_FAIL_ENTRY] = XLAT(KVM_EXIT_FAIL_ENTRY),
 [KVM_EXIT_INTR] = XLAT(KVM_EXIT_INTR),
 [KVM_EXIT_SET_TPR] = XLAT(KVM_EXIT_SET_TPR),
 [KVM_EXIT_TPR_ACCESS] = XLAT(KVM_EXIT_TPR_ACCESS),
 [KVM_EXIT_S390_SIEIC] = XLAT(KVM_EXIT_S390_SIEIC),
 [KVM_EXIT_S390_RESET] = XLAT(KVM_EXIT_S390_RESET),

 [KVM_EXIT_DCR] = XLAT(KVM_EXIT_DCR),
 [KVM_EXIT_NMI] = XLAT(KVM_EXIT_NMI),
 [KVM_EXIT_INTERNAL_ERROR] = XLAT(KVM_EXIT_INTERNAL_ERROR),
 [KVM_EXIT_OSI] = XLAT(KVM_EXIT_OSI),
 [KVM_EXIT_PAPR_HCALL] = XLAT(KVM_EXIT_PAPR_HCALL),
 [KVM_EXIT_S390_UCONTROL] = XLAT(KVM_EXIT_S390_UCONTROL),
 [KVM_EXIT_WATCHDOG] = XLAT(KVM_EXIT_WATCHDOG),
 [KVM_EXIT_S390_TSCH] = XLAT(KVM_EXIT_S390_TSCH),
 [KVM_EXIT_EPR] = XLAT(KVM_EXIT_EPR),
 [KVM_EXIT_SYSTEM_EVENT] = XLAT(KVM_EXIT_SYSTEM_EVENT),
 [KVM_EXIT_S390_STSI] = XLAT(KVM_EXIT_S390_STSI),
 [KVM_EXIT_IOAPIC_EOI] = XLAT(KVM_EXIT_IOAPIC_EOI),
 [KVM_EXIT_HYPERV] = XLAT(KVM_EXIT_HYPERV),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
