xref: /linux/arch/x86/include/asm/vdso.h (revision a62c34bd2a8a3f159945becd57401e478818d51c)
11965aae3SH. Peter Anvin #ifndef _ASM_X86_VDSO_H
21965aae3SH. Peter Anvin #define _ASM_X86_VDSO_H
3bb898558SAl Viro 
49e6f450fSAndy Lutomirski #include <asm/page_types.h>
59e6f450fSAndy Lutomirski #include <linux/linkage.h>
66f121e54SAndy Lutomirski #include <linux/init.h>
79e6f450fSAndy Lutomirski 
86f121e54SAndy Lutomirski #ifndef __ASSEMBLER__
99e6f450fSAndy Lutomirski 
10*a62c34bdSAndy Lutomirski #include <linux/mm_types.h>
11*a62c34bdSAndy Lutomirski 
126f121e54SAndy Lutomirski struct vdso_image {
136f121e54SAndy Lutomirski 	void *data;
146f121e54SAndy Lutomirski 	unsigned long size;   /* Always a multiple of PAGE_SIZE */
15*a62c34bdSAndy Lutomirski 
16*a62c34bdSAndy Lutomirski 	/* text_mapping.pages is big enough for data/size page pointers */
17*a62c34bdSAndy Lutomirski 	struct vm_special_mapping text_mapping;
189e6f450fSAndy Lutomirski 
196f121e54SAndy Lutomirski 	unsigned long alt, alt_len;
209e6f450fSAndy Lutomirski 
2118d0a6fdSAndy Lutomirski 	unsigned long sym_end_mapping;  /* Total size of the mapping */
2218d0a6fdSAndy Lutomirski 
2318d0a6fdSAndy Lutomirski 	unsigned long sym_vvar_page;
2418d0a6fdSAndy Lutomirski 	unsigned long sym_hpet_page;
256f121e54SAndy Lutomirski 	unsigned long sym_VDSO32_NOTE_MASK;
266f121e54SAndy Lutomirski 	unsigned long sym___kernel_sigreturn;
276f121e54SAndy Lutomirski 	unsigned long sym___kernel_rt_sigreturn;
286f121e54SAndy Lutomirski 	unsigned long sym___kernel_vsyscall;
296f121e54SAndy Lutomirski 	unsigned long sym_VDSO32_SYSENTER_RETURN;
306f121e54SAndy Lutomirski };
316f121e54SAndy Lutomirski 
326f121e54SAndy Lutomirski #ifdef CONFIG_X86_64
336f121e54SAndy Lutomirski extern const struct vdso_image vdso_image_64;
346f121e54SAndy Lutomirski #endif
356f121e54SAndy Lutomirski 
366f121e54SAndy Lutomirski #ifdef CONFIG_X86_X32
376f121e54SAndy Lutomirski extern const struct vdso_image vdso_image_x32;
386f121e54SAndy Lutomirski #endif
399e6f450fSAndy Lutomirski 
40bb898558SAl Viro #if defined CONFIG_X86_32 || defined CONFIG_COMPAT
416f121e54SAndy Lutomirski extern const struct vdso_image vdso_image_32_int80;
429e6f450fSAndy Lutomirski #ifdef CONFIG_COMPAT
436f121e54SAndy Lutomirski extern const struct vdso_image vdso_image_32_syscall;
449e6f450fSAndy Lutomirski #endif
456f121e54SAndy Lutomirski extern const struct vdso_image vdso_image_32_sysenter;
469e6f450fSAndy Lutomirski 
476f121e54SAndy Lutomirski extern const struct vdso_image *selected_vdso32;
48bb898558SAl Viro #endif
49bb898558SAl Viro 
506f121e54SAndy Lutomirski extern void __init init_vdso_image(const struct vdso_image *image);
51b4b541a6SAndy Lutomirski 
529e6f450fSAndy Lutomirski #endif /* __ASSEMBLER__ */
539e6f450fSAndy Lutomirski 
541965aae3SH. Peter Anvin #endif /* _ASM_X86_VDSO_H */
55