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

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

#if defined(NT_PRSTATUS) || (defined(HAVE_DECL_NT_PRSTATUS) && HAVE_DECL_NT_PRSTATUS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PRSTATUS) == (1), "NT_PRSTATUS != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PRSTATUS 1
#endif
#if defined(NT_FPREGSET) || (defined(HAVE_DECL_NT_FPREGSET) && HAVE_DECL_NT_FPREGSET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_FPREGSET) == (2), "NT_FPREGSET != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_FPREGSET 2
#endif
#if defined(NT_PRPSINFO) || (defined(HAVE_DECL_NT_PRPSINFO) && HAVE_DECL_NT_PRPSINFO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PRPSINFO) == (3), "NT_PRPSINFO != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PRPSINFO 3
#endif
#if defined(NT_PRXREG) || (defined(HAVE_DECL_NT_PRXREG) && HAVE_DECL_NT_PRXREG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PRXREG) == (4), "NT_PRXREG != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PRXREG 4
#endif
#if defined(NT_TASKSTRUCT) || (defined(HAVE_DECL_NT_TASKSTRUCT) && HAVE_DECL_NT_TASKSTRUCT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_TASKSTRUCT) == (4), "NT_TASKSTRUCT != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_TASKSTRUCT 4
#endif
#if defined(NT_PLATFORM) || (defined(HAVE_DECL_NT_PLATFORM) && HAVE_DECL_NT_PLATFORM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PLATFORM) == (5), "NT_PLATFORM != 5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PLATFORM 5
#endif
#if defined(NT_AUXV) || (defined(HAVE_DECL_NT_AUXV) && HAVE_DECL_NT_AUXV)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_AUXV) == (6), "NT_AUXV != 6");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_AUXV 6
#endif
#if defined(NT_GWINDOWS) || (defined(HAVE_DECL_NT_GWINDOWS) && HAVE_DECL_NT_GWINDOWS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_GWINDOWS) == (7), "NT_GWINDOWS != 7");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_GWINDOWS 7
#endif
#if defined(NT_ASRS) || (defined(HAVE_DECL_NT_ASRS) && HAVE_DECL_NT_ASRS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_ASRS) == (8), "NT_ASRS != 8");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_ASRS 8
#endif
#if defined(NT_PSTATUS) || (defined(HAVE_DECL_NT_PSTATUS) && HAVE_DECL_NT_PSTATUS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PSTATUS) == (10), "NT_PSTATUS != 10");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PSTATUS 10
#endif
#if defined(NT_PSINFO) || (defined(HAVE_DECL_NT_PSINFO) && HAVE_DECL_NT_PSINFO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PSINFO) == (13), "NT_PSINFO != 13");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PSINFO 13
#endif
#if defined(NT_PRCRED) || (defined(HAVE_DECL_NT_PRCRED) && HAVE_DECL_NT_PRCRED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PRCRED) == (14), "NT_PRCRED != 14");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PRCRED 14
#endif
#if defined(NT_UTSNAME) || (defined(HAVE_DECL_NT_UTSNAME) && HAVE_DECL_NT_UTSNAME)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_UTSNAME) == (15), "NT_UTSNAME != 15");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_UTSNAME 15
#endif
#if defined(NT_LWPSTATUS) || (defined(HAVE_DECL_NT_LWPSTATUS) && HAVE_DECL_NT_LWPSTATUS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_LWPSTATUS) == (16), "NT_LWPSTATUS != 16");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_LWPSTATUS 16
#endif
#if defined(NT_LWPSINFO) || (defined(HAVE_DECL_NT_LWPSINFO) && HAVE_DECL_NT_LWPSINFO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_LWPSINFO) == (17), "NT_LWPSINFO != 17");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_LWPSINFO 17
#endif
#if defined(NT_PRFPXREG) || (defined(HAVE_DECL_NT_PRFPXREG) && HAVE_DECL_NT_PRFPXREG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PRFPXREG) == (20), "NT_PRFPXREG != 20");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PRFPXREG 20
#endif
#if defined(NT_SIGINFO) || (defined(HAVE_DECL_NT_SIGINFO) && HAVE_DECL_NT_SIGINFO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_SIGINFO) == (0x53494749), "NT_SIGINFO != 0x53494749");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_SIGINFO 0x53494749
#endif
#if defined(NT_FILE) || (defined(HAVE_DECL_NT_FILE) && HAVE_DECL_NT_FILE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_FILE) == (0x46494c45), "NT_FILE != 0x46494c45");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_FILE 0x46494c45
#endif
#if defined(NT_PRXFPREG) || (defined(HAVE_DECL_NT_PRXFPREG) && HAVE_DECL_NT_PRXFPREG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PRXFPREG) == (0x46e62b7f), "NT_PRXFPREG != 0x46e62b7f");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PRXFPREG 0x46e62b7f
#endif
#if defined(NT_PPC_VMX) || (defined(HAVE_DECL_NT_PPC_VMX) && HAVE_DECL_NT_PPC_VMX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_VMX) == (0x100), "NT_PPC_VMX != 0x100");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_VMX 0x100
#endif
#if defined(NT_PPC_SPE) || (defined(HAVE_DECL_NT_PPC_SPE) && HAVE_DECL_NT_PPC_SPE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_SPE) == (0x101), "NT_PPC_SPE != 0x101");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_SPE 0x101
#endif
#if defined(NT_PPC_VSX) || (defined(HAVE_DECL_NT_PPC_VSX) && HAVE_DECL_NT_PPC_VSX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_VSX) == (0x102), "NT_PPC_VSX != 0x102");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_VSX 0x102
#endif
#if defined(NT_PPC_TAR) || (defined(HAVE_DECL_NT_PPC_TAR) && HAVE_DECL_NT_PPC_TAR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_TAR) == (0x103), "NT_PPC_TAR != 0x103");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_TAR 0x103
#endif
#if defined(NT_PPC_PPR) || (defined(HAVE_DECL_NT_PPC_PPR) && HAVE_DECL_NT_PPC_PPR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_PPR) == (0x104), "NT_PPC_PPR != 0x104");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_PPR 0x104
#endif
#if defined(NT_PPC_DSCR) || (defined(HAVE_DECL_NT_PPC_DSCR) && HAVE_DECL_NT_PPC_DSCR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_DSCR) == (0x105), "NT_PPC_DSCR != 0x105");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_DSCR 0x105
#endif
#if defined(NT_PPC_EBB) || (defined(HAVE_DECL_NT_PPC_EBB) && HAVE_DECL_NT_PPC_EBB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_EBB) == (0x106), "NT_PPC_EBB != 0x106");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_EBB 0x106
#endif
#if defined(NT_PPC_PMU) || (defined(HAVE_DECL_NT_PPC_PMU) && HAVE_DECL_NT_PPC_PMU)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_PMU) == (0x107), "NT_PPC_PMU != 0x107");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_PMU 0x107
#endif
#if defined(NT_PPC_TM_CGPR) || (defined(HAVE_DECL_NT_PPC_TM_CGPR) && HAVE_DECL_NT_PPC_TM_CGPR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_TM_CGPR) == (0x108), "NT_PPC_TM_CGPR != 0x108");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_TM_CGPR 0x108
#endif
#if defined(NT_PPC_TM_CFPR) || (defined(HAVE_DECL_NT_PPC_TM_CFPR) && HAVE_DECL_NT_PPC_TM_CFPR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_TM_CFPR) == (0x109), "NT_PPC_TM_CFPR != 0x109");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_TM_CFPR 0x109
#endif
#if defined(NT_PPC_TM_CVMX) || (defined(HAVE_DECL_NT_PPC_TM_CVMX) && HAVE_DECL_NT_PPC_TM_CVMX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_TM_CVMX) == (0x10a), "NT_PPC_TM_CVMX != 0x10a");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_TM_CVMX 0x10a
#endif
#if defined(NT_PPC_TM_CVSX) || (defined(HAVE_DECL_NT_PPC_TM_CVSX) && HAVE_DECL_NT_PPC_TM_CVSX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_TM_CVSX) == (0x10b), "NT_PPC_TM_CVSX != 0x10b");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_TM_CVSX 0x10b
#endif
#if defined(NT_PPC_TM_SPR) || (defined(HAVE_DECL_NT_PPC_TM_SPR) && HAVE_DECL_NT_PPC_TM_SPR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_TM_SPR) == (0x10c), "NT_PPC_TM_SPR != 0x10c");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_TM_SPR 0x10c
#endif
#if defined(NT_PPC_TM_CTAR) || (defined(HAVE_DECL_NT_PPC_TM_CTAR) && HAVE_DECL_NT_PPC_TM_CTAR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_TM_CTAR) == (0x10d), "NT_PPC_TM_CTAR != 0x10d");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_TM_CTAR 0x10d
#endif
#if defined(NT_PPC_TM_CPPR) || (defined(HAVE_DECL_NT_PPC_TM_CPPR) && HAVE_DECL_NT_PPC_TM_CPPR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_TM_CPPR) == (0x10e), "NT_PPC_TM_CPPR != 0x10e");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_TM_CPPR 0x10e
#endif
#if defined(NT_PPC_TM_CDSCR) || (defined(HAVE_DECL_NT_PPC_TM_CDSCR) && HAVE_DECL_NT_PPC_TM_CDSCR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_TM_CDSCR) == (0x10f), "NT_PPC_TM_CDSCR != 0x10f");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_TM_CDSCR 0x10f
#endif
#if defined(NT_PPC_PKEY) || (defined(HAVE_DECL_NT_PPC_PKEY) && HAVE_DECL_NT_PPC_PKEY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_PPC_PKEY) == (0x110), "NT_PPC_PKEY != 0x110");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_PPC_PKEY 0x110
#endif
#if defined(NT_386_TLS) || (defined(HAVE_DECL_NT_386_TLS) && HAVE_DECL_NT_386_TLS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_386_TLS) == (0x200), "NT_386_TLS != 0x200");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_386_TLS 0x200
#endif
#if defined(NT_386_IOPERM) || (defined(HAVE_DECL_NT_386_IOPERM) && HAVE_DECL_NT_386_IOPERM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_386_IOPERM) == (0x201), "NT_386_IOPERM != 0x201");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_386_IOPERM 0x201
#endif
#if defined(NT_X86_XSTATE) || (defined(HAVE_DECL_NT_X86_XSTATE) && HAVE_DECL_NT_X86_XSTATE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_X86_XSTATE) == (0x202), "NT_X86_XSTATE != 0x202");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_X86_XSTATE 0x202
#endif
#if defined(NT_S390_HIGH_GPRS) || (defined(HAVE_DECL_NT_S390_HIGH_GPRS) && HAVE_DECL_NT_S390_HIGH_GPRS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_S390_HIGH_GPRS) == (0x300), "NT_S390_HIGH_GPRS != 0x300");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_S390_HIGH_GPRS 0x300
#endif
#if defined(NT_S390_TIMER) || (defined(HAVE_DECL_NT_S390_TIMER) && HAVE_DECL_NT_S390_TIMER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_S390_TIMER) == (0x301), "NT_S390_TIMER != 0x301");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_S390_TIMER 0x301
#endif
#if defined(NT_S390_TODCMP) || (defined(HAVE_DECL_NT_S390_TODCMP) && HAVE_DECL_NT_S390_TODCMP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_S390_TODCMP) == (0x302), "NT_S390_TODCMP != 0x302");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_S390_TODCMP 0x302
#endif
#if defined(NT_S390_TODPREG) || (defined(HAVE_DECL_NT_S390_TODPREG) && HAVE_DECL_NT_S390_TODPREG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_S390_TODPREG) == (0x303), "NT_S390_TODPREG != 0x303");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_S390_TODPREG 0x303
#endif
#if defined(NT_S390_CTRS) || (defined(HAVE_DECL_NT_S390_CTRS) && HAVE_DECL_NT_S390_CTRS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_S390_CTRS) == (0x304), "NT_S390_CTRS != 0x304");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_S390_CTRS 0x304
#endif
#if defined(NT_S390_PREFIX) || (defined(HAVE_DECL_NT_S390_PREFIX) && HAVE_DECL_NT_S390_PREFIX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_S390_PREFIX) == (0x305), "NT_S390_PREFIX != 0x305");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_S390_PREFIX 0x305
#endif
#if defined(NT_S390_LAST_BREAK) || (defined(HAVE_DECL_NT_S390_LAST_BREAK) && HAVE_DECL_NT_S390_LAST_BREAK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_S390_LAST_BREAK) == (0x306), "NT_S390_LAST_BREAK != 0x306");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_S390_LAST_BREAK 0x306
#endif
#if defined(NT_S390_SYSTEM_CALL) || (defined(HAVE_DECL_NT_S390_SYSTEM_CALL) && HAVE_DECL_NT_S390_SYSTEM_CALL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_S390_SYSTEM_CALL) == (0x307), "NT_S390_SYSTEM_CALL != 0x307");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_S390_SYSTEM_CALL 0x307
#endif
#if defined(NT_S390_TDB) || (defined(HAVE_DECL_NT_S390_TDB) && HAVE_DECL_NT_S390_TDB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_S390_TDB) == (0x308), "NT_S390_TDB != 0x308");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_S390_TDB 0x308
#endif
#if defined(NT_S390_VXRS_LOW) || (defined(HAVE_DECL_NT_S390_VXRS_LOW) && HAVE_DECL_NT_S390_VXRS_LOW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_S390_VXRS_LOW) == (0x309), "NT_S390_VXRS_LOW != 0x309");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_S390_VXRS_LOW 0x309
#endif
#if defined(NT_S390_VXRS_HIGH) || (defined(HAVE_DECL_NT_S390_VXRS_HIGH) && HAVE_DECL_NT_S390_VXRS_HIGH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_S390_VXRS_HIGH) == (0x30a), "NT_S390_VXRS_HIGH != 0x30a");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_S390_VXRS_HIGH 0x30a
#endif
#if defined(NT_S390_GS_CB) || (defined(HAVE_DECL_NT_S390_GS_CB) && HAVE_DECL_NT_S390_GS_CB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_S390_GS_CB) == (0x30b), "NT_S390_GS_CB != 0x30b");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_S390_GS_CB 0x30b
#endif
#if defined(NT_S390_GS_BC) || (defined(HAVE_DECL_NT_S390_GS_BC) && HAVE_DECL_NT_S390_GS_BC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_S390_GS_BC) == (0x30c), "NT_S390_GS_BC != 0x30c");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_S390_GS_BC 0x30c
#endif
#if defined(NT_S390_RI_CB) || (defined(HAVE_DECL_NT_S390_RI_CB) && HAVE_DECL_NT_S390_RI_CB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_S390_RI_CB) == (0x30d), "NT_S390_RI_CB != 0x30d");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_S390_RI_CB 0x30d
#endif
#if defined(NT_ARM_VFP) || (defined(HAVE_DECL_NT_ARM_VFP) && HAVE_DECL_NT_ARM_VFP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_ARM_VFP) == (0x400), "NT_ARM_VFP != 0x400");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_ARM_VFP 0x400
#endif
#if defined(NT_ARM_TLS) || (defined(HAVE_DECL_NT_ARM_TLS) && HAVE_DECL_NT_ARM_TLS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_ARM_TLS) == (0x401), "NT_ARM_TLS != 0x401");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_ARM_TLS 0x401
#endif
#if defined(NT_ARM_HW_BREAK) || (defined(HAVE_DECL_NT_ARM_HW_BREAK) && HAVE_DECL_NT_ARM_HW_BREAK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_ARM_HW_BREAK) == (0x402), "NT_ARM_HW_BREAK != 0x402");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_ARM_HW_BREAK 0x402
#endif
#if defined(NT_ARM_HW_WATCH) || (defined(HAVE_DECL_NT_ARM_HW_WATCH) && HAVE_DECL_NT_ARM_HW_WATCH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_ARM_HW_WATCH) == (0x403), "NT_ARM_HW_WATCH != 0x403");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_ARM_HW_WATCH 0x403
#endif
#if defined(NT_ARM_SYSTEM_CALL) || (defined(HAVE_DECL_NT_ARM_SYSTEM_CALL) && HAVE_DECL_NT_ARM_SYSTEM_CALL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_ARM_SYSTEM_CALL) == (0x404), "NT_ARM_SYSTEM_CALL != 0x404");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_ARM_SYSTEM_CALL 0x404
#endif
#if defined(NT_ARM_SVE) || (defined(HAVE_DECL_NT_ARM_SVE) && HAVE_DECL_NT_ARM_SVE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_ARM_SVE) == (0x405), "NT_ARM_SVE != 0x405");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_ARM_SVE 0x405
#endif
#if defined(NT_METAG_CBUF) || (defined(HAVE_DECL_NT_METAG_CBUF) && HAVE_DECL_NT_METAG_CBUF)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_METAG_CBUF) == (0x500), "NT_METAG_CBUF != 0x500");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_METAG_CBUF 0x500
#endif
#if defined(NT_METAG_RPIPE) || (defined(HAVE_DECL_NT_METAG_RPIPE) && HAVE_DECL_NT_METAG_RPIPE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_METAG_RPIPE) == (0x501), "NT_METAG_RPIPE != 0x501");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_METAG_RPIPE 0x501
#endif
#if defined(NT_METAG_TLS) || (defined(HAVE_DECL_NT_METAG_TLS) && HAVE_DECL_NT_METAG_TLS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_METAG_TLS) == (0x502), "NT_METAG_TLS != 0x502");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_METAG_TLS 0x502
#endif
#if defined(NT_ARC_V2) || (defined(HAVE_DECL_NT_ARC_V2) && HAVE_DECL_NT_ARC_V2)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NT_ARC_V2) == (0x600), "NT_ARC_V2 != 0x600");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NT_ARC_V2 0x600
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat nt_descriptor_types in mpers mode

# else

static
const struct xlat nt_descriptor_types[] = {
 XLAT(NT_PRSTATUS),
 XLAT(NT_FPREGSET),
 XLAT(NT_PRPSINFO),
 XLAT(NT_PRXREG),
 XLAT(NT_TASKSTRUCT),
 XLAT(NT_PLATFORM),
 XLAT(NT_AUXV),
 XLAT(NT_GWINDOWS),
 XLAT(NT_ASRS),
 XLAT(NT_PSTATUS),
 XLAT(NT_PSINFO),
 XLAT(NT_PRCRED),
 XLAT(NT_UTSNAME),
 XLAT(NT_LWPSTATUS),
 XLAT(NT_LWPSINFO),
 XLAT(NT_PRFPXREG),
 XLAT(NT_SIGINFO),
 XLAT(NT_FILE),
 XLAT(NT_PRXFPREG),
 XLAT(NT_PPC_VMX),
 XLAT(NT_PPC_SPE),
 XLAT(NT_PPC_VSX),
 XLAT(NT_PPC_TAR),
 XLAT(NT_PPC_PPR),
 XLAT(NT_PPC_DSCR),
 XLAT(NT_PPC_EBB),
 XLAT(NT_PPC_PMU),
 XLAT(NT_PPC_TM_CGPR),
 XLAT(NT_PPC_TM_CFPR),
 XLAT(NT_PPC_TM_CVMX),
 XLAT(NT_PPC_TM_CVSX),
 XLAT(NT_PPC_TM_SPR),
 XLAT(NT_PPC_TM_CTAR),
 XLAT(NT_PPC_TM_CPPR),
 XLAT(NT_PPC_TM_CDSCR),
 XLAT(NT_PPC_PKEY),
 XLAT(NT_386_TLS),
 XLAT(NT_386_IOPERM),
 XLAT(NT_X86_XSTATE),
 XLAT(NT_S390_HIGH_GPRS),
 XLAT(NT_S390_TIMER),
 XLAT(NT_S390_TODCMP),
 XLAT(NT_S390_TODPREG),
 XLAT(NT_S390_CTRS),
 XLAT(NT_S390_PREFIX),
 XLAT(NT_S390_LAST_BREAK),
 XLAT(NT_S390_SYSTEM_CALL),
 XLAT(NT_S390_TDB),
 XLAT(NT_S390_VXRS_LOW),
 XLAT(NT_S390_VXRS_HIGH),
 XLAT(NT_S390_GS_CB),
 XLAT(NT_S390_GS_BC),
 XLAT(NT_S390_RI_CB),
 XLAT(NT_ARM_VFP),
 XLAT(NT_ARM_TLS),
 XLAT(NT_ARM_HW_BREAK),
 XLAT(NT_ARM_HW_WATCH),
 XLAT(NT_ARM_SYSTEM_CALL),
 XLAT(NT_ARM_SVE),
 XLAT(NT_METAG_CBUF),
 XLAT(NT_METAG_RPIPE),
 XLAT(NT_METAG_TLS),
 XLAT(NT_ARC_V2),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
