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

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

#if defined(CPUCLOCK_PROF) || (defined(HAVE_DECL_CPUCLOCK_PROF) && HAVE_DECL_CPUCLOCK_PROF)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((CPUCLOCK_PROF) == (0), "CPUCLOCK_PROF != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define CPUCLOCK_PROF 0
#endif
#if defined(CPUCLOCK_VIRT) || (defined(HAVE_DECL_CPUCLOCK_VIRT) && HAVE_DECL_CPUCLOCK_VIRT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((CPUCLOCK_VIRT) == (1), "CPUCLOCK_VIRT != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define CPUCLOCK_VIRT 1
#endif
#if defined(CPUCLOCK_SCHED) || (defined(HAVE_DECL_CPUCLOCK_SCHED) && HAVE_DECL_CPUCLOCK_SCHED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((CPUCLOCK_SCHED) == (2), "CPUCLOCK_SCHED != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define CPUCLOCK_SCHED 2
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat cpuclocknames in mpers mode

# else

static
const struct xlat cpuclocknames[] = {
 [CPUCLOCK_PROF] = XLAT(CPUCLOCK_PROF),
 [CPUCLOCK_VIRT] = XLAT(CPUCLOCK_VIRT),
 [CPUCLOCK_SCHED] = XLAT(CPUCLOCK_SCHED),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
