1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 * Copyright (C) 2015 Imagination Technologies 4 * Author: Alex Smith <alex.smith@imgtec.com> 5 */ 6 7 #ifndef __ASM_VDSO_H 8 #define __ASM_VDSO_H 9 10 #include <linux/mm_types.h> 11 #include <vdso/datapage.h> 12 13 #include <asm/barrier.h> 14 15 /** 16 * struct mips_vdso_image - Details of a VDSO image. 17 * @data: Pointer to VDSO image data (page-aligned). 18 * @size: Size of the VDSO image data (page-aligned). 19 * @off_sigreturn: Offset of the sigreturn() trampoline. 20 * @off_rt_sigreturn: Offset of the rt_sigreturn() trampoline. 21 * @mapping: Special mapping structure. 22 * 23 * This structure contains details of a VDSO image, including the image data 24 * and offsets of certain symbols required by the kernel. It is generated as 25 * part of the VDSO build process, aside from the mapping page array, which is 26 * populated at runtime. 27 */ 28 struct mips_vdso_image { 29 void *data; 30 unsigned long size; 31 32 unsigned long off_sigreturn; 33 unsigned long off_rt_sigreturn; 34 35 struct vm_special_mapping mapping; 36 }; 37 38 /* 39 * The following structures are auto-generated as part of the build for each 40 * ABI by genvdso, see arch/mips/vdso/Makefile. 41 */ 42 43 extern struct mips_vdso_image vdso_image; 44 45 #ifdef CONFIG_MIPS32_O32 46 extern struct mips_vdso_image vdso_image_o32; 47 #endif 48 49 #ifdef CONFIG_MIPS32_N32 50 extern struct mips_vdso_image vdso_image_n32; 51 #endif 52 53 union mips_vdso_data { 54 struct vdso_data data[CS_BASES]; 55 u8 page[PAGE_SIZE]; 56 }; 57 58 #endif /* __ASM_VDSO_H */