H. Peter Anvin | 1965aae | 2008-10-22 22:26:29 -0700 | [diff] [blame] | 1 | #ifndef _ASM_X86_VDSO_H |
| 2 | #define _ASM_X86_VDSO_H |
Roland McGrath | 7f3646a | 2008-01-30 13:30:41 +0100 | [diff] [blame] | 3 | |
Andy Lutomirski | 9e6f450 | 2014-03-20 18:57:18 -0700 | [diff] [blame] | 4 | #include <asm/page_types.h> |
| 5 | #include <linux/linkage.h> |
Andy Lutomirski | 6f121e5 | 2014-05-05 12:19:34 -0700 | [diff] [blame] | 6 | #include <linux/init.h> |
Andy Lutomirski | 9e6f450 | 2014-03-20 18:57:18 -0700 | [diff] [blame] | 7 | |
Andy Lutomirski | 6f121e5 | 2014-05-05 12:19:34 -0700 | [diff] [blame] | 8 | #ifndef __ASSEMBLER__ |
Andy Lutomirski | 9e6f450 | 2014-03-20 18:57:18 -0700 | [diff] [blame] | 9 | |
Andy Lutomirski | a62c34b | 2014-05-19 15:58:33 -0700 | [diff] [blame] | 10 | #include <linux/mm_types.h> |
| 11 | |
Andy Lutomirski | 6f121e5 | 2014-05-05 12:19:34 -0700 | [diff] [blame] | 12 | struct vdso_image { |
| 13 | void *data; |
| 14 | unsigned long size; /* Always a multiple of PAGE_SIZE */ |
Andy Lutomirski | a62c34b | 2014-05-19 15:58:33 -0700 | [diff] [blame] | 15 | |
| 16 | /* text_mapping.pages is big enough for data/size page pointers */ |
| 17 | struct vm_special_mapping text_mapping; |
Andy Lutomirski | 9e6f450 | 2014-03-20 18:57:18 -0700 | [diff] [blame] | 18 | |
Andy Lutomirski | 6f121e5 | 2014-05-05 12:19:34 -0700 | [diff] [blame] | 19 | unsigned long alt, alt_len; |
Andy Lutomirski | 9e6f450 | 2014-03-20 18:57:18 -0700 | [diff] [blame] | 20 | |
Andy Lutomirski | e6577a7 | 2014-07-10 18:13:15 -0700 | [diff] [blame] | 21 | long sym_vvar_start; /* Negative offset to the vvar area */ |
Andy Lutomirski | 18d0a6f | 2014-05-05 12:19:35 -0700 | [diff] [blame] | 22 | |
Andy Lutomirski | e6577a7 | 2014-07-10 18:13:15 -0700 | [diff] [blame] | 23 | long sym_vvar_page; |
| 24 | long sym_hpet_page; |
| 25 | long sym_VDSO32_NOTE_MASK; |
| 26 | long sym___kernel_sigreturn; |
| 27 | long sym___kernel_rt_sigreturn; |
| 28 | long sym___kernel_vsyscall; |
| 29 | long sym_VDSO32_SYSENTER_RETURN; |
Andy Lutomirski | 6f121e5 | 2014-05-05 12:19:34 -0700 | [diff] [blame] | 30 | }; |
| 31 | |
| 32 | #ifdef CONFIG_X86_64 |
| 33 | extern const struct vdso_image vdso_image_64; |
| 34 | #endif |
| 35 | |
| 36 | #ifdef CONFIG_X86_X32 |
| 37 | extern const struct vdso_image vdso_image_x32; |
| 38 | #endif |
Andy Lutomirski | 9e6f450 | 2014-03-20 18:57:18 -0700 | [diff] [blame] | 39 | |
Roland McGrath | 6c3652e | 2008-01-30 13:30:42 +0100 | [diff] [blame] | 40 | #if defined CONFIG_X86_32 || defined CONFIG_COMPAT |
Andy Lutomirski | 6f121e5 | 2014-05-05 12:19:34 -0700 | [diff] [blame] | 41 | extern const struct vdso_image vdso_image_32_int80; |
Andy Lutomirski | 9e6f450 | 2014-03-20 18:57:18 -0700 | [diff] [blame] | 42 | #ifdef CONFIG_COMPAT |
Andy Lutomirski | 6f121e5 | 2014-05-05 12:19:34 -0700 | [diff] [blame] | 43 | extern const struct vdso_image vdso_image_32_syscall; |
Andy Lutomirski | 9e6f450 | 2014-03-20 18:57:18 -0700 | [diff] [blame] | 44 | #endif |
Andy Lutomirski | 6f121e5 | 2014-05-05 12:19:34 -0700 | [diff] [blame] | 45 | extern const struct vdso_image vdso_image_32_sysenter; |
Andy Lutomirski | 9e6f450 | 2014-03-20 18:57:18 -0700 | [diff] [blame] | 46 | |
Andy Lutomirski | 6f121e5 | 2014-05-05 12:19:34 -0700 | [diff] [blame] | 47 | extern const struct vdso_image *selected_vdso32; |
Roland McGrath | 6c3652e | 2008-01-30 13:30:42 +0100 | [diff] [blame] | 48 | #endif |
Roland McGrath | 7f3646a | 2008-01-30 13:30:41 +0100 | [diff] [blame] | 49 | |
Andy Lutomirski | 6f121e5 | 2014-05-05 12:19:34 -0700 | [diff] [blame] | 50 | extern void __init init_vdso_image(const struct vdso_image *image); |
Andy Lutomirski | b4b541a | 2014-03-17 23:22:08 +0100 | [diff] [blame] | 51 | |
Andy Lutomirski | 9e6f450 | 2014-03-20 18:57:18 -0700 | [diff] [blame] | 52 | #endif /* __ASSEMBLER__ */ |
| 53 | |
H. Peter Anvin | 1965aae | 2008-10-22 22:26:29 -0700 | [diff] [blame] | 54 | #endif /* _ASM_X86_VDSO_H */ |