Files
Yaya48 cf256aa081 Import QEMU upstream snapshot d2e570c
Upstream: https://gitlab.com/qemu-project/qemu.git

Upstream-Commit: d2e570cc0f97b936902a5b1b86b73c0f5998b475
2026-08-31 02:15:30 +02:00

64 lines
1.4 KiB
ArmAsm

/*
* s390x linux replacement vdso.
*
* Copyright 2023 Linaro, Ltd.
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include <asm/unistd.h>
#include "vdso-asmoffset.h"
.macro endf name
.globl \name
.type \name, @function
.size \name, . - \name
.endm
.macro raw_syscall n
.ifne \n < 0x100
svc \n
.else
lghi %r1, \n
svc 0
.endif
.endm
.macro vdso_syscall name, nr
\name:
.cfi_startproc
aghi %r15, -(STACK_FRAME_OVERHEAD + 16)
.cfi_adjust_cfa_offset STACK_FRAME_OVERHEAD + 16
stg %r14, STACK_FRAME_OVERHEAD(%r15)
.cfi_rel_offset %r14, STACK_FRAME_OVERHEAD
raw_syscall \nr
lg %r14, STACK_FRAME_OVERHEAD(%r15)
aghi %r15, STACK_FRAME_OVERHEAD + 16
.cfi_restore %r14
.cfi_adjust_cfa_offset -(STACK_FRAME_OVERHEAD + 16)
br %r14
.cfi_endproc
endf \name
.endm
vdso_syscall __kernel_gettimeofday, __NR_gettimeofday
vdso_syscall __kernel_clock_gettime, __NR_clock_gettime
vdso_syscall __kernel_clock_getres, __NR_clock_getres
vdso_syscall __kernel_getcpu, __NR_getcpu
/*
* TODO unwind info, though we're ok without it.
* The kernel supplies bogus empty unwind info, and it is likely ignored
* by all users. Without it we get the fallback signal frame handling.
*/
sigreturn_region_start:
__kernel_sigreturn:
raw_syscall __NR_sigreturn
endf __kernel_sigreturn
__kernel_rt_sigreturn:
raw_syscall __NR_rt_sigreturn
endf __kernel_rt_sigreturn
sigreturn_region_end: