1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * vdso_config.h: Configuration options for vDSO tests.
4  * Copyright (c) 2019 Arm Ltd.
5  */
6 #ifndef __VDSO_CONFIG_H__
7 #define __VDSO_CONFIG_H__
8 
9 /*
10  * Each architecture exports its vDSO implementation with different names
11  * and a different version from the others, so we need to handle it as a
12  * special case.
13  */
14 #if defined(__arm__)
15 #define VDSO_VERSION		0
16 #define VDSO_NAMES		1
17 #define VDSO_32BIT		1
18 #elif defined(__aarch64__)
19 #define VDSO_VERSION		3
20 #define VDSO_NAMES		0
21 #elif defined(__powerpc64__)
22 #define VDSO_VERSION		1
23 #define VDSO_NAMES		0
24 #elif defined(__powerpc__)
25 #define VDSO_VERSION		1
26 #define VDSO_NAMES		0
27 #define VDSO_32BIT		1
28 #elif defined (__s390__) && !defined(__s390x__)
29 #define VDSO_VERSION		2
30 #define VDSO_NAMES		0
31 #define VDSO_32BIT		1
32 #elif defined (__s390x__)
33 #define VDSO_VERSION		2
34 #define VDSO_NAMES		0
35 #elif defined(__mips__)
36 #define VDSO_VERSION		0
37 #define VDSO_NAMES		1
38 #define VDSO_32BIT		1
39 #elif defined(__sparc__)
40 #define VDSO_VERSION		0
41 #define VDSO_NAMES		1
42 #define VDSO_32BIT		1
43 #elif defined(__i386__)
44 #define VDSO_VERSION		0
45 #define VDSO_NAMES		1
46 #define VDSO_32BIT		1
47 #elif defined(__x86_64__)
48 #define VDSO_VERSION		0
49 #define VDSO_NAMES		1
50 #elif defined(__riscv__) || defined(__riscv)
51 #define VDSO_VERSION		5
52 #define VDSO_NAMES		1
53 #if __riscv_xlen == 32
54 #define VDSO_32BIT		1
55 #endif
56 #endif
57 
58 static const char *versions[6] = {
59 	"LINUX_2.6",
60 	"LINUX_2.6.15",
61 	"LINUX_2.6.29",
62 	"LINUX_2.6.39",
63 	"LINUX_4",
64 	"LINUX_4.15",
65 };
66 
67 static const char *names[2][6] = {
68 	{
69 		"__kernel_gettimeofday",
70 		"__kernel_clock_gettime",
71 		"__kernel_time",
72 		"__kernel_clock_getres",
73 		"__kernel_getcpu",
74 #if defined(VDSO_32BIT)
75 		"__kernel_clock_gettime64",
76 #endif
77 	},
78 	{
79 		"__vdso_gettimeofday",
80 		"__vdso_clock_gettime",
81 		"__vdso_time",
82 		"__vdso_clock_getres",
83 		"__vdso_getcpu",
84 #if defined(VDSO_32BIT)
85 		"__vdso_clock_gettime64",
86 #endif
87 	},
88 };
89 
90 #endif /* __VDSO_CONFIG_H__ */
91