/* Generated by ./xlat/gen.sh from ./xlat/audit_arch.in; do not edit. */
#ifdef EM_ARM
#endif
#ifdef EM_FRV
#endif
#ifdef EM_MICROBLAZE
#endif
#ifdef EM_OPENRISC
#endif

#ifdef IN_MPERS

extern const struct xlat audit_arch[];

#else

# if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
static
# endif
const struct xlat audit_arch[] = {

#if defined(AUDIT_ARCH_AARCH64) || (defined(HAVE_DECL_AUDIT_ARCH_AARCH64) && HAVE_DECL_AUDIT_ARCH_AARCH64)
  XLAT(AUDIT_ARCH_AARCH64),
#endif
#if defined(AUDIT_ARCH_ALPHA) || (defined(HAVE_DECL_AUDIT_ARCH_ALPHA) && HAVE_DECL_AUDIT_ARCH_ALPHA)
  XLAT(AUDIT_ARCH_ALPHA),
#endif
#ifdef EM_ARM
#if defined(AUDIT_ARCH_ARM) || (defined(HAVE_DECL_AUDIT_ARCH_ARM) && HAVE_DECL_AUDIT_ARCH_ARM)
  XLAT(AUDIT_ARCH_ARM),
#endif
#if defined(AUDIT_ARCH_ARMEB) || (defined(HAVE_DECL_AUDIT_ARCH_ARMEB) && HAVE_DECL_AUDIT_ARCH_ARMEB)
  XLAT(AUDIT_ARCH_ARMEB),
#endif
#endif
#if defined(AUDIT_ARCH_CRIS) || (defined(HAVE_DECL_AUDIT_ARCH_CRIS) && HAVE_DECL_AUDIT_ARCH_CRIS)
  XLAT(AUDIT_ARCH_CRIS),
#endif
#ifdef EM_FRV
#if defined(AUDIT_ARCH_FRV) || (defined(HAVE_DECL_AUDIT_ARCH_FRV) && HAVE_DECL_AUDIT_ARCH_FRV)
  XLAT(AUDIT_ARCH_FRV),
#endif
#endif
#if defined(AUDIT_ARCH_I386) || (defined(HAVE_DECL_AUDIT_ARCH_I386) && HAVE_DECL_AUDIT_ARCH_I386)
  XLAT(AUDIT_ARCH_I386),
#endif
#if defined(AUDIT_ARCH_IA64) || (defined(HAVE_DECL_AUDIT_ARCH_IA64) && HAVE_DECL_AUDIT_ARCH_IA64)
  XLAT(AUDIT_ARCH_IA64),
#endif
#if defined(AUDIT_ARCH_M32R) || (defined(HAVE_DECL_AUDIT_ARCH_M32R) && HAVE_DECL_AUDIT_ARCH_M32R)
  XLAT(AUDIT_ARCH_M32R),
#endif
#if defined(AUDIT_ARCH_M68K) || (defined(HAVE_DECL_AUDIT_ARCH_M68K) && HAVE_DECL_AUDIT_ARCH_M68K)
  XLAT(AUDIT_ARCH_M68K),
#endif
#ifdef EM_MICROBLAZE
#if defined(AUDIT_ARCH_MICROBLAZE) || (defined(HAVE_DECL_AUDIT_ARCH_MICROBLAZE) && HAVE_DECL_AUDIT_ARCH_MICROBLAZE)
  XLAT(AUDIT_ARCH_MICROBLAZE),
#endif
#endif
#if defined(AUDIT_ARCH_MIPS) || (defined(HAVE_DECL_AUDIT_ARCH_MIPS) && HAVE_DECL_AUDIT_ARCH_MIPS)
  XLAT(AUDIT_ARCH_MIPS),
#endif
#if defined(AUDIT_ARCH_MIPS64) || (defined(HAVE_DECL_AUDIT_ARCH_MIPS64) && HAVE_DECL_AUDIT_ARCH_MIPS64)
  XLAT(AUDIT_ARCH_MIPS64),
#endif
#if defined(AUDIT_ARCH_MIPS64N32) || (defined(HAVE_DECL_AUDIT_ARCH_MIPS64N32) && HAVE_DECL_AUDIT_ARCH_MIPS64N32)
  XLAT(AUDIT_ARCH_MIPS64N32),
#endif
#if defined(AUDIT_ARCH_MIPSEL) || (defined(HAVE_DECL_AUDIT_ARCH_MIPSEL) && HAVE_DECL_AUDIT_ARCH_MIPSEL)
  XLAT(AUDIT_ARCH_MIPSEL),
#endif
#if defined(AUDIT_ARCH_MIPSEL64) || (defined(HAVE_DECL_AUDIT_ARCH_MIPSEL64) && HAVE_DECL_AUDIT_ARCH_MIPSEL64)
  XLAT(AUDIT_ARCH_MIPSEL64),
#endif
#if defined(AUDIT_ARCH_MIPSEL64N32) || (defined(HAVE_DECL_AUDIT_ARCH_MIPSEL64N32) && HAVE_DECL_AUDIT_ARCH_MIPSEL64N32)
  XLAT(AUDIT_ARCH_MIPSEL64N32),
#endif
#ifdef EM_OPENRISC
#if defined(AUDIT_ARCH_OPENRISC) || (defined(HAVE_DECL_AUDIT_ARCH_OPENRISC) && HAVE_DECL_AUDIT_ARCH_OPENRISC)
  XLAT(AUDIT_ARCH_OPENRISC),
#endif
#endif
#if defined(AUDIT_ARCH_PARISC) || (defined(HAVE_DECL_AUDIT_ARCH_PARISC) && HAVE_DECL_AUDIT_ARCH_PARISC)
  XLAT(AUDIT_ARCH_PARISC),
#endif
#if defined(AUDIT_ARCH_PARISC64) || (defined(HAVE_DECL_AUDIT_ARCH_PARISC64) && HAVE_DECL_AUDIT_ARCH_PARISC64)
  XLAT(AUDIT_ARCH_PARISC64),
#endif
#if defined(AUDIT_ARCH_PPC) || (defined(HAVE_DECL_AUDIT_ARCH_PPC) && HAVE_DECL_AUDIT_ARCH_PPC)
  XLAT(AUDIT_ARCH_PPC),
#endif
#if defined(AUDIT_ARCH_PPC64) || (defined(HAVE_DECL_AUDIT_ARCH_PPC64) && HAVE_DECL_AUDIT_ARCH_PPC64)
  XLAT(AUDIT_ARCH_PPC64),
#endif
#if defined(AUDIT_ARCH_PPC64LE) || (defined(HAVE_DECL_AUDIT_ARCH_PPC64LE) && HAVE_DECL_AUDIT_ARCH_PPC64LE)
  XLAT(AUDIT_ARCH_PPC64LE),
#endif
#if defined(AUDIT_ARCH_S390) || (defined(HAVE_DECL_AUDIT_ARCH_S390) && HAVE_DECL_AUDIT_ARCH_S390)
  XLAT(AUDIT_ARCH_S390),
#endif
#if defined(AUDIT_ARCH_S390X) || (defined(HAVE_DECL_AUDIT_ARCH_S390X) && HAVE_DECL_AUDIT_ARCH_S390X)
  XLAT(AUDIT_ARCH_S390X),
#endif
#if defined(AUDIT_ARCH_SH) || (defined(HAVE_DECL_AUDIT_ARCH_SH) && HAVE_DECL_AUDIT_ARCH_SH)
  XLAT(AUDIT_ARCH_SH),
#endif
#if defined(AUDIT_ARCH_SH64) || (defined(HAVE_DECL_AUDIT_ARCH_SH64) && HAVE_DECL_AUDIT_ARCH_SH64)
  XLAT(AUDIT_ARCH_SH64),
#endif
#if defined(AUDIT_ARCH_SHEL) || (defined(HAVE_DECL_AUDIT_ARCH_SHEL) && HAVE_DECL_AUDIT_ARCH_SHEL)
  XLAT(AUDIT_ARCH_SHEL),
#endif
#if defined(AUDIT_ARCH_SHEL64) || (defined(HAVE_DECL_AUDIT_ARCH_SHEL64) && HAVE_DECL_AUDIT_ARCH_SHEL64)
  XLAT(AUDIT_ARCH_SHEL64),
#endif
#if defined(AUDIT_ARCH_SPARC) || (defined(HAVE_DECL_AUDIT_ARCH_SPARC) && HAVE_DECL_AUDIT_ARCH_SPARC)
  XLAT(AUDIT_ARCH_SPARC),
#endif
#if defined(AUDIT_ARCH_SPARC64) || (defined(HAVE_DECL_AUDIT_ARCH_SPARC64) && HAVE_DECL_AUDIT_ARCH_SPARC64)
  XLAT(AUDIT_ARCH_SPARC64),
#endif
#if defined(AUDIT_ARCH_X86_64) || (defined(HAVE_DECL_AUDIT_ARCH_X86_64) && HAVE_DECL_AUDIT_ARCH_X86_64)
  XLAT(AUDIT_ARCH_X86_64),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
