GNU Linux-libre 5.4.274-gnu1
[releases.git] / arch / arm64 / kernel / vdso32 / sigreturn.S
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * This file provides both A32 and T32 versions, in accordance with the
4  * arm sigreturn code.
5  *
6  * Copyright (C) 2018 ARM Limited
7  */
8
9 #include <linux/linkage.h>
10 #include <asm/asm-offsets.h>
11 #include <asm/unistd.h>
12
13 #define ARM_ENTRY(name)         \
14         ENTRY(name)
15
16 #define ARM_ENDPROC(name)       \
17         .type name, %function;  \
18         END(name)
19
20         .text
21
22         .arm
23         .fnstart
24         .save {r0-r15}
25         .pad #COMPAT_SIGFRAME_REGS_OFFSET
26         nop
27 ARM_ENTRY(__kernel_sigreturn_arm)
28         mov r7, #__NR_compat_sigreturn
29         svc #0
30         .fnend
31 ARM_ENDPROC(__kernel_sigreturn_arm)
32
33         .fnstart
34         .save {r0-r15}
35         .pad #COMPAT_RT_SIGFRAME_REGS_OFFSET
36         nop
37 ARM_ENTRY(__kernel_rt_sigreturn_arm)
38         mov r7, #__NR_compat_rt_sigreturn
39         svc #0
40         .fnend
41 ARM_ENDPROC(__kernel_rt_sigreturn_arm)
42
43         .thumb
44         .fnstart
45         .save {r0-r15}
46         .pad #COMPAT_SIGFRAME_REGS_OFFSET
47         nop
48 ARM_ENTRY(__kernel_sigreturn_thumb)
49         mov r7, #__NR_compat_sigreturn
50         svc #0
51         .fnend
52 ARM_ENDPROC(__kernel_sigreturn_thumb)
53
54         .fnstart
55         .save {r0-r15}
56         .pad #COMPAT_RT_SIGFRAME_REGS_OFFSET
57         nop
58 ARM_ENTRY(__kernel_rt_sigreturn_thumb)
59         mov r7, #__NR_compat_rt_sigreturn
60         svc #0
61         .fnend
62 ARM_ENDPROC(__kernel_rt_sigreturn_thumb)