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

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

#ifdef EM_ARM
#endif
#ifdef EM_FRV
#endif
#ifdef EM_MICROBLAZE
#endif
#ifdef EM_OPENRISC
#endif

#ifndef XLAT_MACROS_ONLY

# 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 */

#endif /* !XLAT_MACROS_ONLY */
