1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #include <linux/linkage.h> 3 #include <asm/vdso.h> 4 #include <asm/unistd.h> 5 #include <asm/asm-offsets.h> 6 #include <asm/dwarf.h> 7 #include <asm/ptrace.h> 8 9 /* 10 * Older glibc version called vdso without allocating a stackframe. This wrapper 11 * is just used to allocate a stackframe. See 12 * https://sourceware.org/git/?p=glibc.git;a=commit;h=478593e6374f3818da39332260dc453cb19cfa1e 13 * for details. 14 */ 15 .macro vdso_func func 16 SYM_FUNC_START(__kernel_\func) 17 CFI_STARTPROC 18 aghi %r15,-STACK_FRAME_VDSO_OVERHEAD 19 CFI_DEF_CFA_OFFSET (STACK_FRAME_USER_OVERHEAD + STACK_FRAME_VDSO_OVERHEAD) 20 CFI_VAL_OFFSET 15,-STACK_FRAME_USER_OVERHEAD 21 stg %r14,__SFVDSO_RETURN_ADDRESS(%r15) 22 CFI_REL_OFFSET 14,__SFVDSO_RETURN_ADDRESS 23 xc __SFUSER_BACKCHAIN(8,%r15),__SFUSER_BACKCHAIN(%r15) 24 brasl %r14,__s390_vdso_\func 25 lg %r14,__SFVDSO_RETURN_ADDRESS(%r15) 26 CFI_RESTORE 14 27 aghi %r15,STACK_FRAME_VDSO_OVERHEAD 28 CFI_DEF_CFA_OFFSET STACK_FRAME_USER_OVERHEAD 29 CFI_RESTORE 15 30 br %r14 31 CFI_ENDPROC 32 SYM_FUNC_END(__kernel_\func) 33 .endm 34 35 vdso_func gettimeofday 36 vdso_func clock_getres 37 vdso_func clock_gettime 38 vdso_func getcpu 39 40 .macro vdso_syscall func,syscall 41 SYM_FUNC_START(__kernel_\func) 42 CFI_STARTPROC 43 svc \syscall 44 /* Make sure we notice when a syscall returns, which shouldn't happen */ 45 .word 0 46 CFI_ENDPROC 47 SYM_FUNC_END(__kernel_\func) 48 .endm 49 50 vdso_syscall restart_syscall,__NR_restart_syscall 51 vdso_syscall sigreturn,__NR_sigreturn 52 vdso_syscall rt_sigreturn,__NR_rt_sigreturn
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.