hw/tricore/testboard: Use qdev_new() instead of QOM basic API
[qemu/ar7.git] / linux-user / s390x / vdso.S
blob3332492477183477c6dd8e88c48e7e555f0a9d5d
1 /*
2  * s390x linux replacement vdso.
3  *
4  * Copyright 2023 Linaro, Ltd.
5  *
6  * SPDX-License-Identifier: GPL-2.0-or-later
7  */
9 #include <asm/unistd.h>
10 #include "vdso-asmoffset.h"
12 .macro endf name
13         .globl  \name
14         .type   \name, @function
15         .size   \name, . - \name
16 .endm
18 .macro raw_syscall n
19         .ifne   \n < 0x100
20         svc     \n
21         .else
22         lghi    %r1, \n
23         svc     0
24         .endif
25 .endm
27 .macro vdso_syscall name, nr
28 \name:
29         .cfi_startproc
30         aghi    %r15, -(STACK_FRAME_OVERHEAD + 16)
31         .cfi_adjust_cfa_offset STACK_FRAME_OVERHEAD + 16
32         stg     %r14, STACK_FRAME_OVERHEAD(%r15)
33         .cfi_rel_offset %r14, STACK_FRAME_OVERHEAD
34         raw_syscall \nr
35         lg      %r14, STACK_FRAME_OVERHEAD(%r15)
36         aghi    %r15, STACK_FRAME_OVERHEAD + 16
37         .cfi_restore %r14
38         .cfi_adjust_cfa_offset -(STACK_FRAME_OVERHEAD + 16)
39         br      %r14
40         .cfi_endproc
41 endf    \name
42 .endm
44 vdso_syscall __kernel_gettimeofday, __NR_gettimeofday
45 vdso_syscall __kernel_clock_gettime, __NR_clock_gettime
46 vdso_syscall __kernel_clock_getres, __NR_clock_getres
47 vdso_syscall __kernel_getcpu, __NR_getcpu
50  * TODO unwind info, though we're ok without it.
51  * The kernel supplies bogus empty unwind info, and it is likely ignored
52  * by all users.  Without it we get the fallback signal frame handling.
53  */
55 __kernel_sigreturn:
56         raw_syscall __NR_sigreturn
57 endf    __kernel_sigreturn
59 __kernel_rt_sigreturn:
60         raw_syscall __NR_rt_sigreturn
61 endf    __kernel_rt_sigreturn