GNU Linux-libre 5.19-rc6-gnu
[releases.git] / arch / csky / include / asm / vdso.h
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 */