1#ifndef __PPC64_VDSO_H__
2#define __PPC64_VDSO_H__
3
4#ifdef __KERNEL__
5
6/* Default link addresses for the vDSOs */
7#define VDSO32_LBASE	0x100000
8#define VDSO64_LBASE	0x100000
9
10/* Default map addresses */
11#define VDSO32_MBASE	VDSO32_LBASE
12#define VDSO64_MBASE	VDSO64_LBASE
13
14#define VDSO_VERSION_STRING	LINUX_2.6.15
15
16/* Define if 64 bits VDSO has procedure descriptors */
17#undef VDS64_HAS_DESCRIPTORS
18
19#ifndef __ASSEMBLY__
20
21/* Offsets relative to thread->vdso_base */
22extern unsigned long vdso64_rt_sigtramp;
23extern unsigned long vdso32_sigtramp;
24extern unsigned long vdso32_rt_sigtramp;
25
26#else /* __ASSEMBLY__ */
27
28#ifdef __VDSO64__
29#ifdef VDS64_HAS_DESCRIPTORS
30#define V_FUNCTION_BEGIN(name)		\
31	.globl name;			\
32        .section ".opd","a";		\
33        .align 3;			\
34	name:				\
35	.quad .name,.TOC.@tocbase,0;	\
36	.previous;			\
37	.globl .name;			\
38	.type .name,@function; 		\
39	.name:				\
40
41#define V_FUNCTION_END(name)		\
42	.size .name,.-.name;
43
44#define V_LOCAL_FUNC(name) (.name)
45
46#else /* VDS64_HAS_DESCRIPTORS */
47
48#define V_FUNCTION_BEGIN(name)		\
49	.globl name;			\
50	name:				\
51
52#define V_FUNCTION_END(name)		\
53	.size name,.-name;
54
55#define V_LOCAL_FUNC(name) (name)
56
57#endif /* VDS64_HAS_DESCRIPTORS */
58#endif /* __VDSO64__ */
59
60#ifdef __VDSO32__
61
62#define V_FUNCTION_BEGIN(name)		\
63	.globl name;			\
64	.type name,@function; 		\
65	name:				\
66
67#define V_FUNCTION_END(name)		\
68	.size name,.-name;
69
70#define V_LOCAL_FUNC(name) (name)
71
72#endif /* __VDSO32__ */
73
74#endif /* __ASSEMBLY__ */
75
76#endif /* __KERNEL__ */
77
78#endif /* __PPC64_VDSO_H__ */
79