blob: b5e1f8f8a05c247abb12eb2fc9d3c229e1e12126 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002#ifndef __PPC64_VDSO_H__
3#define __PPC64_VDSO_H__
4
5#ifdef __KERNEL__
6
7/* Default link addresses for the vDSOs */
Anton Blancharda0a44192014-02-12 17:17:05 +11008#define VDSO32_LBASE 0x0
9#define VDSO64_LBASE 0x0
Linus Torvalds1da177e2005-04-16 15:20:36 -070010
Anton Blanchard30d0b362009-07-13 20:53:51 +000011/* Default map addresses for 32bit vDSO */
Anton Blancharda0a44192014-02-12 17:17:05 +110012#define VDSO32_MBASE 0x100000
Linus Torvalds1da177e2005-04-16 15:20:36 -070013
Benjamin Herrenschmidt5d66da32005-11-16 13:54:32 +110014#define VDSO_VERSION_STRING LINUX_2.6.15
Linus Torvalds1da177e2005-04-16 15:20:36 -070015
16/* Define if 64 bits VDSO has procedure descriptors */
17#undef VDS64_HAS_DESCRIPTORS
18
19#ifndef __ASSEMBLY__
20
Linus Torvalds1da177e2005-04-16 15:20:36 -070021/* Offsets relative to thread->vdso_base */
22extern unsigned long vdso64_rt_sigtramp;
23extern unsigned long vdso32_sigtramp;
24extern unsigned long vdso32_rt_sigtramp;
25
Paul Gortmaker061d19f2013-06-24 15:30:09 -040026int vdso_getcpu_init(void);
Anton Blanchard18ad51d2012-07-04 20:37:11 +000027
Linus Torvalds1da177e2005-04-16 15:20:36 -070028#else /* __ASSEMBLY__ */
29
30#ifdef __VDSO64__
31#ifdef VDS64_HAS_DESCRIPTORS
32#define V_FUNCTION_BEGIN(name) \
33 .globl name; \
34 .section ".opd","a"; \
35 .align 3; \
36 name: \
37 .quad .name,.TOC.@tocbase,0; \
38 .previous; \
39 .globl .name; \
40 .type .name,@function; \
41 .name: \
42
43#define V_FUNCTION_END(name) \
44 .size .name,.-.name;
45
46#define V_LOCAL_FUNC(name) (.name)
47
48#else /* VDS64_HAS_DESCRIPTORS */
49
50#define V_FUNCTION_BEGIN(name) \
51 .globl name; \
52 name: \
53
54#define V_FUNCTION_END(name) \
55 .size name,.-name;
56
57#define V_LOCAL_FUNC(name) (name)
58
59#endif /* VDS64_HAS_DESCRIPTORS */
60#endif /* __VDSO64__ */
61
62#ifdef __VDSO32__
63
64#define V_FUNCTION_BEGIN(name) \
65 .globl name; \
66 .type name,@function; \
67 name: \
68
69#define V_FUNCTION_END(name) \
70 .size name,.-name;
71
72#define V_LOCAL_FUNC(name) (name)
73
74#endif /* __VDSO32__ */
75
76#endif /* __ASSEMBLY__ */
77
78#endif /* __KERNEL__ */
79
80#endif /* __PPC64_VDSO_H__ */