0001
0002 #include <asm/vdso.h>
0003 #include <asm/unistd.h>
0004 #include <asm/asm-offsets.h>
0005 #include <asm/dwarf.h>
0006 #include <asm/ptrace.h>
0007
0008 #define WRAPPER_FRAME_SIZE (STACK_FRAME_OVERHEAD+8)
0009
0010
0011
0012
0013
0014
0015
0016 .macro vdso_func func
0017 .globl __kernel_\func
0018 .type __kernel_\func,@function
0019 .align 8
0020 __kernel_\func:
0021 CFI_STARTPROC
0022 aghi %r15,-WRAPPER_FRAME_SIZE
0023 CFI_DEF_CFA_OFFSET (STACK_FRAME_OVERHEAD + WRAPPER_FRAME_SIZE)
0024 CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
0025 stg %r14,STACK_FRAME_OVERHEAD(%r15)
0026 brasl %r14,__s390_vdso_\func
0027 lg %r14,STACK_FRAME_OVERHEAD(%r15)
0028 aghi %r15,WRAPPER_FRAME_SIZE
0029 CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
0030 CFI_RESTORE 15
0031 br %r14
0032 CFI_ENDPROC
0033 .size __kernel_\func,.-__kernel_\func
0034 .endm
0035
0036 vdso_func gettimeofday
0037 vdso_func clock_getres
0038 vdso_func clock_gettime
0039 vdso_func getcpu
0040
0041 .macro vdso_syscall func,syscall
0042 .globl __kernel_\func
0043 .type __kernel_\func,@function
0044 .align 8
0045 __kernel_\func:
0046 CFI_STARTPROC
0047 svc \syscall
0048
0049 .word 0
0050 CFI_ENDPROC
0051 .size __kernel_\func,.-__kernel_\func
0052 .endm
0053
0054 vdso_syscall restart_syscall,__NR_restart_syscall
0055 vdso_syscall sigreturn,__NR_sigreturn
0056 vdso_syscall rt_sigreturn,__NR_rt_sigreturn