/* Generated by ./xlat/gen.sh from ./xlat/personality_types.in; do not edit. */
#if !(defined(PER_LINUX) || (defined(HAVE_DECL_PER_LINUX) && HAVE_DECL_PER_LINUX))
# define PER_LINUX 0
#endif
#if !(defined(PER_LINUX_32BIT) || (defined(HAVE_DECL_PER_LINUX_32BIT) && HAVE_DECL_PER_LINUX_32BIT))
# define PER_LINUX_32BIT ADDR_LIMIT_32BIT
#endif
#if !(defined(PER_LINUX_FDPIC) || (defined(HAVE_DECL_PER_LINUX_FDPIC) && HAVE_DECL_PER_LINUX_FDPIC))
# define PER_LINUX_FDPIC FDPIC_FUNCPTRS
#endif
#if !(defined(PER_SVR4) || (defined(HAVE_DECL_PER_SVR4) && HAVE_DECL_PER_SVR4))
# define PER_SVR4 (0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO)
#endif
#if !(defined(PER_SVR3) || (defined(HAVE_DECL_PER_SVR3) && HAVE_DECL_PER_SVR3))
# define PER_SVR3 (0x0002 | STICKY_TIMEOUTS | SHORT_INODE)
#endif
#if !(defined(PER_SCOSVR3) || (defined(HAVE_DECL_PER_SCOSVR3) && HAVE_DECL_PER_SCOSVR3))
# define PER_SCOSVR3 (0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS | SHORT_INODE)
#endif
#if !(defined(PER_OSR5) || (defined(HAVE_DECL_PER_OSR5) && HAVE_DECL_PER_OSR5))
# define PER_OSR5 (0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS)
#endif
#if !(defined(PER_WYSEV386) || (defined(HAVE_DECL_PER_WYSEV386) && HAVE_DECL_PER_WYSEV386))
# define PER_WYSEV386 (0x0004 | STICKY_TIMEOUTS | SHORT_INODE)
#endif
#if !(defined(PER_ISCR4) || (defined(HAVE_DECL_PER_ISCR4) && HAVE_DECL_PER_ISCR4))
# define PER_ISCR4 (0x0005 | STICKY_TIMEOUTS)
#endif
#if !(defined(PER_BSD) || (defined(HAVE_DECL_PER_BSD) && HAVE_DECL_PER_BSD))
# define PER_BSD 0x0006
#endif
#if !(defined(PER_SUNOS) || (defined(HAVE_DECL_PER_SUNOS) && HAVE_DECL_PER_SUNOS))
# define PER_SUNOS (0x0006 | STICKY_TIMEOUTS)
#endif
#if !(defined(PER_XENIX) || (defined(HAVE_DECL_PER_XENIX) && HAVE_DECL_PER_XENIX))
# define PER_XENIX (0x0007 | STICKY_TIMEOUTS | SHORT_INODE)
#endif
#if !(defined(PER_LINUX32) || (defined(HAVE_DECL_PER_LINUX32) && HAVE_DECL_PER_LINUX32))
# define PER_LINUX32 0x0008
#endif
#if !(defined(PER_LINUX32_3GB) || (defined(HAVE_DECL_PER_LINUX32_3GB) && HAVE_DECL_PER_LINUX32_3GB))
# define PER_LINUX32_3GB (0x0008 | ADDR_LIMIT_3GB)
#endif
#if !(defined(PER_IRIX32) || (defined(HAVE_DECL_PER_IRIX32) && HAVE_DECL_PER_IRIX32))
# define PER_IRIX32 (0x0009 | STICKY_TIMEOUTS)
#endif
#if !(defined(PER_IRIXN32) || (defined(HAVE_DECL_PER_IRIXN32) && HAVE_DECL_PER_IRIXN32))
# define PER_IRIXN32 (0x000a | STICKY_TIMEOUTS)
#endif
#if !(defined(PER_IRIX64) || (defined(HAVE_DECL_PER_IRIX64) && HAVE_DECL_PER_IRIX64))
# define PER_IRIX64 (0x000b | STICKY_TIMEOUTS)
#endif
#if !(defined(PER_RISCOS) || (defined(HAVE_DECL_PER_RISCOS) && HAVE_DECL_PER_RISCOS))
# define PER_RISCOS 0x000c
#endif
#if !(defined(PER_SOLARIS) || (defined(HAVE_DECL_PER_SOLARIS) && HAVE_DECL_PER_SOLARIS))
# define PER_SOLARIS (0x000d | STICKY_TIMEOUTS)
#endif
#if !(defined(PER_UW7) || (defined(HAVE_DECL_PER_UW7) && HAVE_DECL_PER_UW7))
# define PER_UW7 (0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO)
#endif
#if !(defined(PER_OSF4) || (defined(HAVE_DECL_PER_OSF4) && HAVE_DECL_PER_OSF4))
# define PER_OSF4 0x000f
#endif
#if !(defined(PER_HPUX) || (defined(HAVE_DECL_PER_HPUX) && HAVE_DECL_PER_HPUX))
# define PER_HPUX 0x0010
#endif
#if !(defined(PER_MASK) || (defined(HAVE_DECL_PER_MASK) && HAVE_DECL_PER_MASK))
# define PER_MASK 0x00ff
#endif

#ifdef IN_MPERS

# error static const struct xlat personality_types in mpers mode

#else

static
const struct xlat personality_types[] = {
 XLAT(PER_LINUX),
 XLAT(PER_LINUX_32BIT),
 XLAT(PER_LINUX_FDPIC),
 XLAT(PER_SVR4),
 XLAT(PER_SVR3),
 XLAT(PER_SCOSVR3),
 XLAT(PER_OSR5),
 XLAT(PER_WYSEV386),
 XLAT(PER_ISCR4),
 XLAT(PER_BSD),
 XLAT(PER_SUNOS),
 XLAT(PER_XENIX),
 XLAT(PER_LINUX32),
 XLAT(PER_LINUX32_3GB),
 XLAT(PER_IRIX32),
 XLAT(PER_IRIXN32),
 XLAT(PER_IRIX64),
 XLAT(PER_RISCOS),
 XLAT(PER_SOLARIS),
 XLAT(PER_UW7),
 XLAT(PER_OSF4),
 XLAT(PER_HPUX),
 XLAT(PER_MASK),
 XLAT_END
};

#endif /* !IN_MPERS */
