cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

vdso_user_wrapper.S (1480B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#include <asm/vdso.h>
      3#include <asm/unistd.h>
      4#include <asm/asm-offsets.h>
      5#include <asm/dwarf.h>
      6#include <asm/ptrace.h>
      7
      8#define WRAPPER_FRAME_SIZE (STACK_FRAME_OVERHEAD+8)
      9
     10/*
     11 * Older glibc version called vdso without allocating a stackframe. This wrapper
     12 * is just used to allocate a stackframe. See
     13 * https://sourceware.org/git/?p=glibc.git;a=commit;h=478593e6374f3818da39332260dc453cb19cfa1e
     14 * for details.
     15 */
     16.macro vdso_func func
     17	.globl __kernel_\func
     18	.type  __kernel_\func,@function
     19	.align 8
     20__kernel_\func:
     21	CFI_STARTPROC
     22	aghi	%r15,-WRAPPER_FRAME_SIZE
     23	CFI_DEF_CFA_OFFSET (STACK_FRAME_OVERHEAD + WRAPPER_FRAME_SIZE)
     24	CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
     25	stg	%r14,STACK_FRAME_OVERHEAD(%r15)
     26	brasl	%r14,__s390_vdso_\func
     27	lg	%r14,STACK_FRAME_OVERHEAD(%r15)
     28	aghi	%r15,WRAPPER_FRAME_SIZE
     29	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
     30	CFI_RESTORE 15
     31	br	%r14
     32	CFI_ENDPROC
     33	.size	__kernel_\func,.-__kernel_\func
     34.endm
     35
     36vdso_func gettimeofday
     37vdso_func clock_getres
     38vdso_func clock_gettime
     39vdso_func getcpu
     40
     41.macro vdso_syscall func,syscall
     42	.globl __kernel_\func
     43	.type  __kernel_\func,@function
     44	.align 8
     45__kernel_\func:
     46	CFI_STARTPROC
     47	svc	\syscall
     48	/* Make sure we notice when a syscall returns, which shouldn't happen */
     49	.word	0
     50	CFI_ENDPROC
     51	.size	__kernel_\func,.-__kernel_\func
     52.endm
     53
     54vdso_syscall restart_syscall,__NR_restart_syscall
     55vdso_syscall sigreturn,__NR_sigreturn
     56vdso_syscall rt_sigreturn,__NR_rt_sigreturn