vdso.h 1.4 KB

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