xref: /linux/arch/csky/include/asm/vdso.h (revision 4f77c3462308c62ffe7129cc18b9ac937f44b5a5)
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 /*
9  * The VDSO symbols are mapped into Linux so we can just use regular symbol
10  * addressing to get their offsets in userspace.  The symbols are mapped at an
11  * offset of 0, but since the linker must support setting weak undefined
12  * symbols to the absolute address 0 it also happens to support other low
13  * addresses even when the code model suggests those low addresses would not
14  * otherwise be available.
15  */
16 #define VDSO_SYMBOL(base, name)							\
17 ({										\
18 	extern const char __vdso_##name[];					\
19 	(void __user *)((unsigned long)(base) + __vdso_##name);			\
20 })
21 
22 #endif /* __ASM_CSKY_VDSO_H */
23