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

#ifdef IN_MPERS

extern const struct xlat adjtimex_modes[];

#else

# if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
static
# endif
const struct xlat adjtimex_modes[] = {
 XLAT(0),
#if defined(ADJ_OFFSET) || (defined(HAVE_DECL_ADJ_OFFSET) && HAVE_DECL_ADJ_OFFSET)
  XLAT(ADJ_OFFSET),
#endif
#if defined(ADJ_FREQUENCY) || (defined(HAVE_DECL_ADJ_FREQUENCY) && HAVE_DECL_ADJ_FREQUENCY)
  XLAT(ADJ_FREQUENCY),
#endif
#if defined(ADJ_MAXERROR) || (defined(HAVE_DECL_ADJ_MAXERROR) && HAVE_DECL_ADJ_MAXERROR)
  XLAT(ADJ_MAXERROR),
#endif
#if defined(ADJ_ESTERROR) || (defined(HAVE_DECL_ADJ_ESTERROR) && HAVE_DECL_ADJ_ESTERROR)
  XLAT(ADJ_ESTERROR),
#endif
#if defined(ADJ_STATUS) || (defined(HAVE_DECL_ADJ_STATUS) && HAVE_DECL_ADJ_STATUS)
  XLAT(ADJ_STATUS),
#endif
#if defined(ADJ_TIMECONST) || (defined(HAVE_DECL_ADJ_TIMECONST) && HAVE_DECL_ADJ_TIMECONST)
  XLAT(ADJ_TIMECONST),
#endif
#if defined(ADJ_TAI) || (defined(HAVE_DECL_ADJ_TAI) && HAVE_DECL_ADJ_TAI)
  XLAT(ADJ_TAI),
#endif
#if defined(ADJ_SETOFFSET) || (defined(HAVE_DECL_ADJ_SETOFFSET) && HAVE_DECL_ADJ_SETOFFSET)
  XLAT(ADJ_SETOFFSET),
#endif
#if defined(ADJ_MICRO) || (defined(HAVE_DECL_ADJ_MICRO) && HAVE_DECL_ADJ_MICRO)
  XLAT(ADJ_MICRO),
#endif
#if defined(ADJ_NANO) || (defined(HAVE_DECL_ADJ_NANO) && HAVE_DECL_ADJ_NANO)
  XLAT(ADJ_NANO),
#endif
#if defined(ADJ_TICK) || (defined(HAVE_DECL_ADJ_TICK) && HAVE_DECL_ADJ_TICK)
  XLAT(ADJ_TICK),
#endif
#if defined(ADJ_OFFSET_SINGLESHOT) || (defined(HAVE_DECL_ADJ_OFFSET_SINGLESHOT) && HAVE_DECL_ADJ_OFFSET_SINGLESHOT)
  XLAT(ADJ_OFFSET_SINGLESHOT),
#endif
#if defined(ADJ_OFFSET_SS_READ) || (defined(HAVE_DECL_ADJ_OFFSET_SS_READ) && HAVE_DECL_ADJ_OFFSET_SS_READ)
  XLAT(ADJ_OFFSET_SS_READ),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
