1 /* SPDX-License-Identifier: GPL-2.0 */
2 
3 #ifndef __ASM_CSKY_VDSO_H
4 #define __ASM_CSKY_VDSO_H
5 
6 #include <linux/types.h>
7 
8 #ifndef GENERIC_TIME_VSYSCALL
9 struct vdso_data {
10 };
11 #endif
12 
13 /*
14  * The VDSO symbols are mapped into Linux so we can just use regular symbol
15  * addressing to get their offsets in userspace.  The symbols are mapped at an
16  * offset of 0, but since the linker must support setting weak undefined
17  * symbols to the absolute address 0 it also happens to support other low
18  * addresses even when the code model suggests those low addresses would not
19  * otherwise be available.
20  */
21 #define VDSO_SYMBOL(base, name)							\
22 ({										\
23 	extern const char __vdso_##name[];					\
24 	(void __user *)((unsigned long)(base) + __vdso_##name);			\
25 })
26 
27 #endif /* __ASM_CSKY_VDSO_H */
28