root/tools/testing/selftests/vDSO/vdso_config.h
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * vdso_config.h: Configuration options for vDSO tests.
 * Copyright (c) 2019 Arm Ltd.
 */
#ifndef __VDSO_CONFIG_H__
#define __VDSO_CONFIG_H__

/*
 * Each architecture exports its vDSO implementation with different names
 * and a different version from the others, so we need to handle it as a
 * special case.
 */
#if defined(__arm__)
#define VDSO_VERSION            0
#define VDSO_NAMES              1
#define VDSO_32BIT              1
#elif defined(__aarch64__)
#define VDSO_VERSION            3
#define VDSO_NAMES              0
#elif defined(__powerpc64__)
#define VDSO_VERSION            1
#define VDSO_NAMES              0
#elif defined(__powerpc__)
#define VDSO_VERSION            1
#define VDSO_NAMES              0
#define VDSO_32BIT              1
#elif defined (__s390x__)
#define VDSO_VERSION            2
#define VDSO_NAMES              0
#elif defined(__mips__)
#define VDSO_VERSION            0
#define VDSO_NAMES              1
#define VDSO_32BIT              1
#elif defined(__sparc__)
#define VDSO_VERSION            0
#define VDSO_NAMES              1
#define VDSO_32BIT              1
#elif defined(__i386__)
#define VDSO_VERSION            0
#define VDSO_NAMES              1
#define VDSO_32BIT              1
#elif defined(__x86_64__)
#define VDSO_VERSION            0
#define VDSO_NAMES              1
#elif defined(__riscv__) || defined(__riscv)
#define VDSO_VERSION            5
#define VDSO_NAMES              1
#if __riscv_xlen == 32
#define VDSO_32BIT              1
#endif
#elif defined(__loongarch__)
#define VDSO_VERSION            6
#define VDSO_NAMES              1
#endif

__attribute__((unused))
static const char *versions[7] = {
        "LINUX_2.6",
        "LINUX_2.6.15",
        "LINUX_2.6.29",
        "LINUX_2.6.39",
        "LINUX_4",
        "LINUX_4.15",
        "LINUX_5.10"
};

__attribute__((unused))
static const char *names[2][8] = {
        {
                "__kernel_gettimeofday",
                "__kernel_clock_gettime",
                "__kernel_time",
                "__kernel_clock_getres",
                "__kernel_getcpu",
                "__kernel_clock_gettime64",
                "__kernel_getrandom",
                "__kernel_clock_getres_time64",
        },
        {
                "__vdso_gettimeofday",
                "__vdso_clock_gettime",
                "__vdso_time",
                "__vdso_clock_getres",
                "__vdso_getcpu",
                "__vdso_clock_gettime64",
                "__vdso_getrandom",
                "__vdso_clock_getres_time64",
        },
};

#endif /* __VDSO_CONFIG_H__ */