^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef _ASM_X86_VDSO_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define _ASM_X86_VDSO_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <asm/page_types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #include <linux/linkage.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include <linux/init.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #ifndef __ASSEMBLER__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <linux/mm_types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) struct vdso_image {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) void *data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) unsigned long size; /* Always a multiple of PAGE_SIZE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) unsigned long alt, alt_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) long sym_vvar_start; /* Negative offset to the vvar area */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) long sym_vvar_page;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) long sym_pvclock_page;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) long sym_hvclock_page;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) long sym_timens_page;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) long sym_VDSO32_NOTE_MASK;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) long sym___kernel_sigreturn;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) long sym___kernel_rt_sigreturn;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) long sym___kernel_vsyscall;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) long sym_int80_landing_pad;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #ifdef CONFIG_X86_64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) extern const struct vdso_image vdso_image_64;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #ifdef CONFIG_X86_X32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) extern const struct vdso_image vdso_image_x32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #if defined CONFIG_X86_32 || defined CONFIG_COMPAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) extern const struct vdso_image vdso_image_32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) extern void __init init_vdso_image(const struct vdso_image *image);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) extern int map_vdso_once(const struct vdso_image *image, unsigned long addr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) #endif /* __ASSEMBLER__ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) #endif /* _ASM_X86_VDSO_H */