]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - arch/arm64/kernel/sys32.S
arm64: Remove unused definitions from asm/unistd32.h
[mirror_ubuntu-artful-kernel.git] / arch / arm64 / kernel / sys32.S
1 /*
2 * Compat system call wrappers
3 *
4 * Copyright (C) 2012 ARM Ltd.
5 * Authors: Will Deacon <will.deacon@arm.com>
6 * Catalin Marinas <catalin.marinas@arm.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21 #include <linux/linkage.h>
22
23 #include <asm/assembler.h>
24 #include <asm/asm-offsets.h>
25
26 /*
27 * System call wrappers for the AArch32 compatibility layer.
28 */
29 compat_sys_fork_wrapper:
30 mov x0, sp
31 b compat_sys_fork
32 ENDPROC(compat_sys_fork_wrapper)
33
34 compat_sys_vfork_wrapper:
35 mov x0, sp
36 b compat_sys_vfork
37 ENDPROC(compat_sys_vfork_wrapper)
38
39 compat_sys_execve_wrapper:
40 mov x3, sp
41 b compat_sys_execve
42 ENDPROC(compat_sys_execve_wrapper)
43
44 compat_sys_clone_wrapper:
45 mov x5, sp
46 b compat_sys_clone
47 ENDPROC(compat_sys_clone_wrapper)
48
49 compat_sys_sigreturn_wrapper:
50 mov x0, sp
51 mov x27, #0 // prevent syscall restart handling (why)
52 b compat_sys_sigreturn
53 ENDPROC(compat_sys_sigreturn_wrapper)
54
55 compat_sys_rt_sigreturn_wrapper:
56 mov x0, sp
57 mov x27, #0 // prevent syscall restart handling (why)
58 b compat_sys_rt_sigreturn
59 ENDPROC(compat_sys_rt_sigreturn_wrapper)
60
61 compat_sys_sigaltstack_wrapper:
62 ldr x2, [sp, #S_COMPAT_SP]
63 b compat_do_sigaltstack
64 ENDPROC(compat_sys_sigaltstack_wrapper)
65
66 compat_sys_statfs64_wrapper:
67 mov w3, #84
68 cmp w1, #88
69 csel w1, w3, w1, eq
70 b compat_sys_statfs64
71 ENDPROC(compat_sys_statfs64_wrapper)
72
73 compat_sys_fstatfs64_wrapper:
74 mov w3, #84
75 cmp w1, #88
76 csel w1, w3, w1, eq
77 b compat_sys_fstatfs64
78 ENDPROC(compat_sys_fstatfs64_wrapper)
79
80 /*
81 * Wrappers for AArch32 syscalls that either take 64-bit parameters
82 * in registers or that take 32-bit parameters which require sign
83 * extension.
84 */
85 compat_sys_lseek_wrapper:
86 sxtw x1, w1
87 b sys_lseek
88 ENDPROC(compat_sys_lseek_wrapper)
89
90 compat_sys_pread64_wrapper:
91 orr x3, x4, x5, lsl #32
92 b sys_pread64
93 ENDPROC(compat_sys_pread64_wrapper)
94
95 compat_sys_pwrite64_wrapper:
96 orr x3, x4, x5, lsl #32
97 b sys_pwrite64
98 ENDPROC(compat_sys_pwrite64_wrapper)
99
100 compat_sys_truncate64_wrapper:
101 orr x1, x2, x3, lsl #32
102 b sys_truncate
103 ENDPROC(compat_sys_truncate64_wrapper)
104
105 compat_sys_ftruncate64_wrapper:
106 orr x1, x2, x3, lsl #32
107 b sys_ftruncate
108 ENDPROC(compat_sys_ftruncate64_wrapper)
109
110 compat_sys_readahead_wrapper:
111 orr x1, x2, x3, lsl #32
112 mov w2, w4
113 b sys_readahead
114 ENDPROC(compat_sys_readahead_wrapper)
115
116 compat_sys_lookup_dcookie:
117 orr x0, x0, x1, lsl #32
118 mov w1, w2
119 mov w2, w3
120 b sys_lookup_dcookie
121 ENDPROC(compat_sys_lookup_dcookie)
122
123 compat_sys_fadvise64_64_wrapper:
124 mov w6, w1
125 orr x1, x2, x3, lsl #32
126 orr x2, x4, x5, lsl #32
127 mov w3, w6
128 b sys_fadvise64_64
129 ENDPROC(compat_sys_fadvise64_64_wrapper)
130
131 compat_sys_sync_file_range2_wrapper:
132 orr x2, x2, x3, lsl #32
133 orr x3, x4, x5, lsl #32
134 b sys_sync_file_range2
135 ENDPROC(compat_sys_sync_file_range2_wrapper)
136
137 compat_sys_fallocate_wrapper:
138 orr x2, x2, x3, lsl #32
139 orr x3, x4, x5, lsl #32
140 b sys_fallocate
141 ENDPROC(compat_sys_fallocate_wrapper)
142
143 compat_sys_fanotify_mark_wrapper:
144 orr x2, x2, x3, lsl #32
145 mov w3, w4
146 mov w4, w5
147 b sys_fanotify_mark
148 ENDPROC(compat_sys_fanotify_mark_wrapper)
149
150 #undef __SYSCALL
151 #define __SYSCALL(x, y) .quad y // x
152 #define __SYSCALL_COMPAT
153
154 /*
155 * The system calls table must be 4KB aligned.
156 */
157 .align 12
158 ENTRY(compat_sys_call_table)
159 #include <asm/unistd.h>