1 /* SPDX-License-Identifier: GPL-2.0 */
2 #include <linux/linkage.h>
4 #include <asm/unistd.h>
5 #include <asm/asm-offsets.h>
7 #include <asm/ptrace.h>
9 #define WRAPPER_FRAME_SIZE (STACK_FRAME_OVERHEAD+8)
12 * Older glibc version called vdso without allocating a stackframe. This wrapper
13 * is just used to allocate a stackframe. See
14 * https://sourceware.org/git/?p=glibc.git;a=commit;h=478593e6374f3818da39332260dc453cb19cfa1e
19 .type __kernel_\func,@function
23 aghi %r15,-WRAPPER_FRAME_SIZE
24 CFI_DEF_CFA_OFFSET (STACK_FRAME_OVERHEAD + WRAPPER_FRAME_SIZE)
25 CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
26 stg %r14,STACK_FRAME_OVERHEAD(%r15)
27 CFI_REL_OFFSET 14, STACK_FRAME_OVERHEAD
28 brasl %r14,__s390_vdso_\func
29 lg %r14,STACK_FRAME_OVERHEAD(%r15)
31 aghi %r15,WRAPPER_FRAME_SIZE
32 CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
36 .size __kernel_\func,.-__kernel_\func
39 vdso_func gettimeofday
40 vdso_func clock_getres
41 vdso_func clock_gettime
44 .macro vdso_syscall func,syscall
46 .type __kernel_\func,@function
51 /* Make sure we notice when a syscall returns, which shouldn't happen */
54 .size __kernel_\func,.-__kernel_\func
57 vdso_syscall restart_syscall,__NR_restart_syscall
58 vdso_syscall sigreturn,__NR_sigreturn
59 vdso_syscall rt_sigreturn,__NR_rt_sigreturn