blob: 9ebe3e2403b1d7b84d66732cd261364208f6020d [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 1995 - 2000, 2001 by Ralf Baechle
7 * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
8 * Copyright (C) 2001 MIPS Technologies, Inc.
9 * Copyright (C) 2004 Thiemo Seufer
10 *
11 * Hairy, the userspace application uses a different argument passing
12 * convention than the kernel, so we have to translate things from o32
Ralf Baechle70342282013-01-22 12:59:30 +010013 * to ABI64 calling convention. 64-bit syscalls are also processed
Linus Torvalds1da177e2005-04-16 15:20:36 -070014 * here for now.
15 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070016#include <linux/errno.h>
17#include <asm/asm.h>
18#include <asm/asmmacro.h>
Ralf Baechle192ef362006-07-07 14:07:18 +010019#include <asm/irqflags.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070020#include <asm/mipsregs.h>
21#include <asm/regdef.h>
22#include <asm/stackframe.h>
23#include <asm/thread_info.h>
24#include <asm/unistd.h>
25#include <asm/sysmips.h>
26
Ralf Baechle70342282013-01-22 12:59:30 +010027 .align 5
Linus Torvalds1da177e2005-04-16 15:20:36 -070028NESTED(handle_sys, PT_SIZE, sp)
29 .set noat
30 SAVE_SOME
Atsushi Nemotoeae6c0d2006-09-26 23:43:40 +090031 TRACE_IRQS_ON_RELOAD
Linus Torvalds1da177e2005-04-16 15:20:36 -070032 STI
33 .set at
34 ld t1, PT_EPC(sp) # skip syscall on return
35
36 dsubu t0, v0, __NR_O32_Linux # check syscall number
37 sltiu t0, t0, __NR_O32_Linux_syscalls + 1
38 daddiu t1, 4 # skip to next instruction
39 sd t1, PT_EPC(sp)
40 beqz t0, not_o32_scall
41#if 0
42 SAVE_ALL
43 move a1, v0
44 PRINT("Scall %ld\n")
45 RESTORE_ALL
46#endif
47
48 /* We don't want to stumble over broken sign extensions from
49 userland. O32 does never use the upper half. */
50 sll a0, a0, 0
51 sll a1, a1, 0
52 sll a2, a2, 0
53 sll a3, a3, 0
54
Linus Torvalds1da177e2005-04-16 15:20:36 -070055 sd a3, PT_R26(sp) # save a3 for syscall restarting
56
57 /*
58 * More than four arguments. Try to deal with it by copying the
59 * stack arguments from the user stack to the kernel stack.
60 * This Sucks (TM).
61 *
62 * We intentionally keep the kernel stack a little below the top of
63 * userspace so we don't have to do a slower byte accurate check here.
64 */
65 ld t0, PT_R29(sp) # get old user stack pointer
66 daddu t1, t0, 32
67 bltz t1, bad_stack
68
Ralf Baechle7928eb02015-07-08 04:49:10 +020069load_a4: lw a4, 16(t0) # argument #5 from usp
70load_a5: lw a5, 20(t0) # argument #6 from usp
71load_a6: lw a6, 24(t0) # argument #7 from usp
72load_a7: lw a7, 28(t0) # argument #8 from usp
73loads_done:
Linus Torvalds1da177e2005-04-16 15:20:36 -070074
75 .section __ex_table,"a"
Ralf Baechle7928eb02015-07-08 04:49:10 +020076 PTR load_a4, bad_stack_a4
77 PTR load_a5, bad_stack_a5
78 PTR load_a6, bad_stack_a6
79 PTR load_a7, bad_stack_a7
Linus Torvalds1da177e2005-04-16 15:20:36 -070080 .previous
81
Ralf Baechlee7f3b482013-05-29 01:02:18 +020082 li t1, _TIF_WORK_SYSCALL_ENTRY
Linus Torvalds1da177e2005-04-16 15:20:36 -070083 LONG_L t0, TI_FLAGS($28) # syscall tracing enabled?
84 and t0, t1, t0
85 bnez t0, trace_a_syscall
86
Markos Chandrasd218af72015-09-25 08:17:42 +010087syscall_common:
Matt Redfearna400bed2016-03-29 09:35:31 +010088 dsll t0, v0, 3 # offset into table
89 ld t2, (sys32_call_table - (__NR_O32_Linux * 8))(t0)
90
Linus Torvalds1da177e2005-04-16 15:20:36 -070091 jalr t2 # Do The Real Thing (TM)
92
93 li t0, -EMAXERRNO - 1 # error?
94 sltu t0, t0, v0
95 sd t0, PT_R7(sp) # set error flag
96 beqz t0, 1f
97
Al Viro8f5a00eb2010-09-28 18:50:37 +010098 ld t1, PT_R2(sp) # syscall number
Linus Torvalds1da177e2005-04-16 15:20:36 -070099 dnegu v0 # error
Al Viro8f5a00eb2010-09-28 18:50:37 +0100100 sd t1, PT_R0(sp) # save it for syscall restarting
Linus Torvalds1da177e2005-04-16 15:20:36 -07001011: sd v0, PT_R2(sp) # result
102
103o32_syscall_exit:
Al Viro02f884e2012-05-05 16:11:35 -0400104 j syscall_exit_partial
Linus Torvalds1da177e2005-04-16 15:20:36 -0700105
106/* ------------------------------------------------------------------------ */
107
108trace_a_syscall:
109 SAVE_STATIC
110 sd a4, PT_R8(sp) # Save argument registers
111 sd a5, PT_R9(sp)
112 sd a6, PT_R10(sp)
113 sd a7, PT_R11(sp) # For indirect syscalls
114
Linus Torvalds1da177e2005-04-16 15:20:36 -0700115 move a0, sp
Markos Chandras4c21b8f2014-01-22 14:40:03 +0000116 /*
Markos Chandrasad61ba22014-07-24 12:10:02 +0100117 * absolute syscall number is in v0 unless we called syscall(__NR_###)
Markos Chandras4c21b8f2014-01-22 14:40:03 +0000118 * where the real syscall number is in a0
119 * note: NR_syscall is the first O32 syscall but the macro is
120 * only defined when compiling with -mabi=32 (CONFIG_32BIT)
121 * therefore __NR_O32_Linux is used (4000)
122 */
Markos Chandrasad61ba22014-07-24 12:10:02 +0100123 .set push
124 .set reorder
125 subu t1, v0, __NR_O32_Linux
126 move a1, v0
127 bnez t1, 1f /* __NR_syscall at offset 0 */
128 lw a1, PT_R4(sp) /* Arg1 for __NR_syscall case */
129 .set pop
Markos Chandras4c21b8f2014-01-22 14:40:03 +0000130
1311: jal syscall_trace_enter
Linus Torvalds1da177e2005-04-16 15:20:36 -0700132
Markos Chandrasd218af72015-09-25 08:17:42 +0100133 bltz v0, 1f # seccomp failed? Skip syscall
Markos Chandras9d37c402014-01-22 14:40:02 +0000134
Ralf Baechle04a70522005-11-30 16:24:57 +0000135 RESTORE_STATIC
Matt Redfearna400bed2016-03-29 09:35:31 +0100136 ld v0, PT_R2(sp) # Restore syscall (maybe modified)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700137 ld a0, PT_R4(sp) # Restore argument registers
138 ld a1, PT_R5(sp)
139 ld a2, PT_R6(sp)
140 ld a3, PT_R7(sp)
141 ld a4, PT_R8(sp)
142 ld a5, PT_R9(sp)
143 ld a6, PT_R10(sp)
144 ld a7, PT_R11(sp) # For indirect syscalls
Matt Redfearna400bed2016-03-29 09:35:31 +0100145
146 dsubu t0, v0, __NR_O32_Linux # check (new) syscall number
147 sltiu t0, t0, __NR_O32_Linux_syscalls + 1
148 beqz t0, not_o32_scall
149
Markos Chandrasd218af72015-09-25 08:17:42 +0100150 j syscall_common
Linus Torvalds1da177e2005-04-16 15:20:36 -0700151
Markos Chandrasd218af72015-09-25 08:17:42 +01001521: j syscall_exit
Linus Torvalds1da177e2005-04-16 15:20:36 -0700153
154/* ------------------------------------------------------------------------ */
155
156 /*
157 * The stackpointer for a call with more than 4 arguments is bad.
158 */
159bad_stack:
Al Viro5b89c002010-09-28 18:50:47 +0100160 li v0, EFAULT
Linus Torvalds1da177e2005-04-16 15:20:36 -0700161 sd v0, PT_R2(sp)
162 li t0, 1 # set error flag
163 sd t0, PT_R7(sp)
164 j o32_syscall_exit
165
Ralf Baechle7928eb02015-07-08 04:49:10 +0200166bad_stack_a4:
167 li a4, 0
168 b load_a5
169
170bad_stack_a5:
171 li a5, 0
172 b load_a6
173
174bad_stack_a6:
175 li a6, 0
176 b load_a7
177
178bad_stack_a7:
179 li a7, 0
180 b loads_done
181
Linus Torvalds1da177e2005-04-16 15:20:36 -0700182not_o32_scall:
183 /*
184 * This is not an o32 compatibility syscall, pass it on
185 * to the 64-bit syscall handlers.
186 */
187#ifdef CONFIG_MIPS32_N32
188 j handle_sysn32
189#else
190 j handle_sys64
191#endif
192 END(handle_sys)
193
194LEAF(sys32_syscall)
Vlad Malove807f952008-11-18 15:05:46 -0800195 subu t0, a0, __NR_O32_Linux # check syscall number
196 sltiu v0, t0, __NR_O32_Linux_syscalls + 1
197 beqz t0, einval # do not recurse
198 dsll t1, t0, 3
Linus Torvalds1da177e2005-04-16 15:20:36 -0700199 beqz v0, einval
Ralf Baechle2a9c2752012-07-12 14:01:31 +0200200 ld t2, sys32_call_table(t1) # syscall routine
Linus Torvalds1da177e2005-04-16 15:20:36 -0700201
202 move a0, a1 # shift argument registers
203 move a1, a2
204 move a2, a3
205 move a3, a4
206 move a4, a5
207 move a5, a6
208 move a6, a7
Linus Torvalds1da177e2005-04-16 15:20:36 -0700209 jr t2
210 /* Unreached */
211
Ralf Baechle70342282013-01-22 12:59:30 +0100212einval: li v0, -ENOSYS
Linus Torvalds1da177e2005-04-16 15:20:36 -0700213 jr ra
214 END(sys32_syscall)
215
216 .align 3
Ralf Baechle2a9c2752012-07-12 14:01:31 +0200217 .type sys32_call_table,@object
218EXPORT(sys32_call_table)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700219 PTR sys32_syscall /* 4000 */
220 PTR sys_exit
Al Viro50150d22012-12-27 12:11:46 -0500221 PTR __sys_fork
Linus Torvalds1da177e2005-04-16 15:20:36 -0700222 PTR sys_read
223 PTR sys_write
Thiemo Seufer71552622006-05-28 15:02:53 +0100224 PTR compat_sys_open /* 4005 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700225 PTR sys_close
226 PTR sys_waitpid
227 PTR sys_creat
228 PTR sys_link
229 PTR sys_unlink /* 4010 */
Ralf Baechlebaf9ff72012-10-09 21:16:07 +0200230 PTR compat_sys_execve
Linus Torvalds1da177e2005-04-16 15:20:36 -0700231 PTR sys_chdir
232 PTR compat_sys_time
233 PTR sys_mknod
234 PTR sys_chmod /* 4015 */
235 PTR sys_lchown
236 PTR sys_ni_syscall
237 PTR sys_ni_syscall /* was sys_stat */
238 PTR sys_lseek
239 PTR sys_getpid /* 4020 */
Ralf Baechle089c7e72006-10-16 16:49:37 +0100240 PTR compat_sys_mount
Linus Torvalds1da177e2005-04-16 15:20:36 -0700241 PTR sys_oldumount
242 PTR sys_setuid
243 PTR sys_getuid
244 PTR compat_sys_stime /* 4025 */
Thomas Bogendoerfer5d9a76c2008-08-17 16:49:25 +0200245 PTR compat_sys_ptrace
Linus Torvalds1da177e2005-04-16 15:20:36 -0700246 PTR sys_alarm
247 PTR sys_ni_syscall /* was sys_fstat */
248 PTR sys_pause
249 PTR compat_sys_utime /* 4030 */
250 PTR sys_ni_syscall
251 PTR sys_ni_syscall
252 PTR sys_access
253 PTR sys_nice
254 PTR sys_ni_syscall /* 4035 */
255 PTR sys_sync
256 PTR sys_kill
257 PTR sys_rename
258 PTR sys_mkdir
259 PTR sys_rmdir /* 4040 */
260 PTR sys_dup
Ralf Baechle8213bbf2008-07-20 13:16:46 +0100261 PTR sysm_pipe
Linus Torvalds1da177e2005-04-16 15:20:36 -0700262 PTR compat_sys_times
263 PTR sys_ni_syscall
264 PTR sys_brk /* 4045 */
265 PTR sys_setgid
266 PTR sys_getgid
267 PTR sys_ni_syscall /* was signal 2 */
268 PTR sys_geteuid
269 PTR sys_getegid /* 4050 */
270 PTR sys_acct
271 PTR sys_umount
272 PTR sys_ni_syscall
273 PTR compat_sys_ioctl
274 PTR compat_sys_fcntl /* 4055 */
275 PTR sys_ni_syscall
276 PTR sys_setpgid
277 PTR sys_ni_syscall
278 PTR sys_olduname
279 PTR sys_umask /* 4060 */
280 PTR sys_chroot
Christoph Hellwig2b1c6bd2008-11-28 10:09:09 +0100281 PTR compat_sys_ustat
Linus Torvalds1da177e2005-04-16 15:20:36 -0700282 PTR sys_dup2
283 PTR sys_getppid
284 PTR sys_getpgrp /* 4065 */
285 PTR sys_setsid
Ralf Baechledbda6ac2009-02-08 16:00:26 +0000286 PTR sys_32_sigaction
Linus Torvalds1da177e2005-04-16 15:20:36 -0700287 PTR sys_sgetmask
288 PTR sys_ssetmask
289 PTR sys_setreuid /* 4070 */
290 PTR sys_setregid
291 PTR sys32_sigsuspend
292 PTR compat_sys_sigpending
293 PTR sys_sethostname
294 PTR compat_sys_setrlimit /* 4075 */
295 PTR compat_sys_getrlimit
296 PTR compat_sys_getrusage
Christoph Hellwigb418da12008-10-15 22:02:06 -0700297 PTR compat_sys_gettimeofday
298 PTR compat_sys_settimeofday
Linus Torvalds1da177e2005-04-16 15:20:36 -0700299 PTR sys_getgroups /* 4080 */
300 PTR sys_setgroups
301 PTR sys_ni_syscall /* old_select */
302 PTR sys_symlink
303 PTR sys_ni_syscall /* was sys_lstat */
304 PTR sys_readlink /* 4085 */
305 PTR sys_uselib
306 PTR sys_swapon
307 PTR sys_reboot
Atsushi Nemoto2fd628f2006-02-21 15:59:00 +0900308 PTR compat_sys_old_readdir
Ralf Baechledbda6ac2009-02-08 16:00:26 +0000309 PTR sys_mips_mmap /* 4090 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700310 PTR sys_munmap
Al Viro3f6d0782013-02-24 13:49:08 -0500311 PTR compat_sys_truncate
312 PTR compat_sys_ftruncate
Linus Torvalds1da177e2005-04-16 15:20:36 -0700313 PTR sys_fchmod
314 PTR sys_fchown /* 4095 */
315 PTR sys_getpriority
316 PTR sys_setpriority
317 PTR sys_ni_syscall
318 PTR compat_sys_statfs
319 PTR compat_sys_fstatfs /* 4100 */
320 PTR sys_ni_syscall /* sys_ioperm */
Ralf Baechle08274ce2007-02-27 01:11:28 +0000321 PTR compat_sys_socketcall
Linus Torvalds1da177e2005-04-16 15:20:36 -0700322 PTR sys_syslog
323 PTR compat_sys_setitimer
324 PTR compat_sys_getitimer /* 4105 */
325 PTR compat_sys_newstat
326 PTR compat_sys_newlstat
327 PTR compat_sys_newfstat
328 PTR sys_uname
329 PTR sys_ni_syscall /* sys_ioperm *//* 4110 */
330 PTR sys_vhangup
331 PTR sys_ni_syscall /* was sys_idle */
332 PTR sys_ni_syscall /* sys_vm86 */
Ralf Baechleb6e203d2005-02-16 21:18:52 +0000333 PTR compat_sys_wait4
Linus Torvalds1da177e2005-04-16 15:20:36 -0700334 PTR sys_swapoff /* 4115 */
Kyle McMartind4d23ad2007-02-10 01:46:00 -0800335 PTR compat_sys_sysinfo
Al Viro56e41d32013-01-21 23:15:25 -0500336 PTR compat_sys_ipc
Linus Torvalds1da177e2005-04-16 15:20:36 -0700337 PTR sys_fsync
338 PTR sys32_sigreturn
Al Viro50150d22012-12-27 12:11:46 -0500339 PTR __sys_clone /* 4120 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700340 PTR sys_setdomainname
Christoph Hellwige28cbf22010-03-10 15:21:19 -0800341 PTR sys_newuname
Linus Torvalds1da177e2005-04-16 15:20:36 -0700342 PTR sys_ni_syscall /* sys_modify_ldt */
Stephen Rothwell3158e942006-03-26 01:37:29 -0800343 PTR compat_sys_adjtimex
Linus Torvalds1da177e2005-04-16 15:20:36 -0700344 PTR sys_mprotect /* 4125 */
345 PTR compat_sys_sigprocmask
346 PTR sys_ni_syscall /* was creat_module */
347 PTR sys_init_module
348 PTR sys_delete_module
349 PTR sys_ni_syscall /* 4130, get_kernel_syms */
350 PTR sys_quotactl
351 PTR sys_getpgid
352 PTR sys_fchdir
353 PTR sys_bdflush
354 PTR sys_sysfs /* 4135 */
Ralf Baechledbda6ac2009-02-08 16:00:26 +0000355 PTR sys_32_personality
Ralf Baechle70342282013-01-22 12:59:30 +0100356 PTR sys_ni_syscall /* for afs_syscall */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700357 PTR sys_setfsuid
358 PTR sys_setfsgid
Ralf Baechledbda6ac2009-02-08 16:00:26 +0000359 PTR sys_32_llseek /* 4140 */
Atsushi Nemoto2fd628f2006-02-21 15:59:00 +0900360 PTR compat_sys_getdents
Linus Torvalds1da177e2005-04-16 15:20:36 -0700361 PTR compat_sys_select
362 PTR sys_flock
363 PTR sys_msync
364 PTR compat_sys_readv /* 4145 */
365 PTR compat_sys_writev
366 PTR sys_cacheflush
367 PTR sys_cachectl
James Hogan49955d82017-05-31 16:19:48 +0100368 PTR __sys_sysmips
Linus Torvalds1da177e2005-04-16 15:20:36 -0700369 PTR sys_ni_syscall /* 4150 */
370 PTR sys_getsid
371 PTR sys_fdatasync
Eric W. Biedermanaff639c2009-04-03 00:46:47 -0700372 PTR compat_sys_sysctl
Linus Torvalds1da177e2005-04-16 15:20:36 -0700373 PTR sys_mlock
374 PTR sys_munlock /* 4155 */
375 PTR sys_mlockall
376 PTR sys_munlockall
377 PTR sys_sched_setparam
378 PTR sys_sched_getparam
Ralf Baechle70342282013-01-22 12:59:30 +0100379 PTR sys_sched_setscheduler /* 4160 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700380 PTR sys_sched_getscheduler
381 PTR sys_sched_yield
382 PTR sys_sched_get_priority_max
383 PTR sys_sched_get_priority_min
Linus Torvaldsaebb2af2013-03-02 07:44:16 -0800384 PTR compat_sys_sched_rr_get_interval /* 4165 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700385 PTR compat_sys_nanosleep
386 PTR sys_mremap
387 PTR sys_accept
388 PTR sys_bind
389 PTR sys_connect /* 4170 */
390 PTR sys_getpeername
391 PTR sys_getsockname
Ralf Baechle51d53672015-07-09 18:02:51 +0200392 PTR compat_sys_getsockopt
Linus Torvalds1da177e2005-04-16 15:20:36 -0700393 PTR sys_listen
Johannes Berg1dacc762009-07-01 11:26:02 +0000394 PTR compat_sys_recv /* 4175 */
395 PTR compat_sys_recvfrom
Linus Torvalds1da177e2005-04-16 15:20:36 -0700396 PTR compat_sys_recvmsg
397 PTR sys_send
398 PTR compat_sys_sendmsg
399 PTR sys_sendto /* 4180 */
400 PTR compat_sys_setsockopt
401 PTR sys_shutdown
402 PTR sys_socket
403 PTR sys_socketpair
404 PTR sys_setresuid /* 4185 */
405 PTR sys_getresuid
406 PTR sys_ni_syscall /* was query_module */
407 PTR sys_poll
NeilBrownf5b94092011-08-26 18:03:11 -0400408 PTR sys_ni_syscall /* was nfsservctl */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700409 PTR sys_setresgid /* 4190 */
410 PTR sys_getresgid
411 PTR sys_prctl
412 PTR sys32_rt_sigreturn
Al Viroaa584802012-12-25 18:55:27 -0500413 PTR compat_sys_rt_sigaction
Linus Torvaldsaebb2af2013-03-02 07:44:16 -0800414 PTR compat_sys_rt_sigprocmask /* 4195 */
Al Viro45cb66f2012-12-25 15:00:46 -0500415 PTR compat_sys_rt_sigpending
Linus Torvalds1da177e2005-04-16 15:20:36 -0700416 PTR compat_sys_rt_sigtimedwait
Al Viroea5d83d2012-12-25 15:49:15 -0500417 PTR compat_sys_rt_sigqueueinfo
Al Virobde208d2012-11-25 01:36:15 -0500418 PTR compat_sys_rt_sigsuspend
Ralf Baechledbda6ac2009-02-08 16:00:26 +0000419 PTR sys_32_pread /* 4200 */
420 PTR sys_32_pwrite
Linus Torvalds1da177e2005-04-16 15:20:36 -0700421 PTR sys_chown
422 PTR sys_getcwd
423 PTR sys_capget
424 PTR sys_capset /* 4205 */
Al Viroea536ad2012-12-23 03:13:40 -0500425 PTR compat_sys_sigaltstack
Al Viro19f4fc32013-02-24 02:17:03 -0500426 PTR compat_sys_sendfile
Linus Torvalds1da177e2005-04-16 15:20:36 -0700427 PTR sys_ni_syscall
428 PTR sys_ni_syscall
Ralf Baechledbda6ac2009-02-08 16:00:26 +0000429 PTR sys_mips_mmap2 /* 4210 */
430 PTR sys_32_truncate64
431 PTR sys_32_ftruncate64
Linus Torvalds1da177e2005-04-16 15:20:36 -0700432 PTR sys_newstat
433 PTR sys_newlstat
434 PTR sys_newfstat /* 4215 */
435 PTR sys_pivot_root
436 PTR sys_mincore
437 PTR sys_madvise
438 PTR sys_getdents64
439 PTR compat_sys_fcntl64 /* 4220 */
440 PTR sys_ni_syscall
441 PTR sys_gettid
442 PTR sys32_readahead
443 PTR sys_setxattr
444 PTR sys_lsetxattr /* 4225 */
445 PTR sys_fsetxattr
446 PTR sys_getxattr
447 PTR sys_lgetxattr
448 PTR sys_fgetxattr
449 PTR sys_listxattr /* 4230 */
450 PTR sys_llistxattr
451 PTR sys_flistxattr
452 PTR sys_removexattr
453 PTR sys_lremovexattr
454 PTR sys_fremovexattr /* 4235 */
455 PTR sys_tkill
456 PTR sys_sendfile64
Al Viro5e392b8d2012-12-25 23:22:15 -0500457 PTR compat_sys_futex
Linus Torvalds1da177e2005-04-16 15:20:36 -0700458 PTR compat_sys_sched_setaffinity
459 PTR compat_sys_sched_getaffinity /* 4240 */
Michel Thebeaue2cc5022010-09-28 14:15:37 -0400460 PTR compat_sys_io_setup
Linus Torvalds1da177e2005-04-16 15:20:36 -0700461 PTR sys_io_destroy
Michel Thebeaue2cc5022010-09-28 14:15:37 -0400462 PTR compat_sys_io_getevents
463 PTR compat_sys_io_submit
Linus Torvalds1da177e2005-04-16 15:20:36 -0700464 PTR sys_io_cancel /* 4245 */
465 PTR sys_exit_group
Al Virod5dc77b2013-02-25 18:42:04 -0500466 PTR compat_sys_lookup_dcookie
Linus Torvalds1da177e2005-04-16 15:20:36 -0700467 PTR sys_epoll_create
468 PTR sys_epoll_ctl
469 PTR sys_epoll_wait /* 4250 */
470 PTR sys_remap_file_pages
471 PTR sys_set_tid_address
472 PTR sys_restart_syscall
Atsushi Nemoto8676d2e2007-05-18 00:46:13 +0900473 PTR sys32_fadvise64_64
Linus Torvalds1da177e2005-04-16 15:20:36 -0700474 PTR compat_sys_statfs64 /* 4255 */
475 PTR compat_sys_fstatfs64
Ralf Baechle821d3132007-02-27 01:21:17 +0000476 PTR compat_sys_timer_create
Linus Torvalds1da177e2005-04-16 15:20:36 -0700477 PTR compat_sys_timer_settime
478 PTR compat_sys_timer_gettime
479 PTR sys_timer_getoverrun /* 4260 */
480 PTR sys_timer_delete
481 PTR compat_sys_clock_settime
482 PTR compat_sys_clock_gettime
483 PTR compat_sys_clock_getres
484 PTR compat_sys_clock_nanosleep /* 4265 */
485 PTR sys_tgkill
486 PTR compat_sys_utimes
Huacai Chen1ff1ad62014-06-26 11:41:29 +0800487 PTR compat_sys_mbind
488 PTR compat_sys_get_mempolicy
489 PTR compat_sys_set_mempolicy /* 4270 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700490 PTR compat_sys_mq_open
491 PTR sys_mq_unlink
492 PTR compat_sys_mq_timedsend
493 PTR compat_sys_mq_timedreceive
494 PTR compat_sys_mq_notify /* 4275 */
495 PTR compat_sys_mq_getsetattr
496 PTR sys_ni_syscall /* sys_vserver */
Al Viro1c37ea822012-12-23 15:06:31 -0500497 PTR compat_sys_waitid
Linus Torvalds1da177e2005-04-16 15:20:36 -0700498 PTR sys_ni_syscall /* available, was setaltroot */
499 PTR sys_add_key /* 4280 */
500 PTR sys_request_key
David Howells20f06ed2016-07-27 11:43:37 +0100501 PTR compat_sys_keyctl
Ralf Baechle3c370262005-04-13 17:43:59 +0000502 PTR sys_set_thread_area
Ralf Baechle7db36c82005-07-13 11:48:45 +0000503 PTR sys_inotify_init
504 PTR sys_inotify_add_watch /* 4285 */
505 PTR sys_inotify_rm_watch
Huacai Chen1ff1ad62014-06-26 11:41:29 +0800506 PTR compat_sys_migrate_pages
Ralf Baechle72bf8912006-02-08 13:38:50 +0000507 PTR compat_sys_openat
508 PTR sys_mkdirat
509 PTR sys_mknodat /* 4290 */
510 PTR sys_fchownat
511 PTR compat_sys_futimesat
Richard Sandiford63415db2006-09-17 20:30:46 +0100512 PTR sys_newfstatat
Ralf Baechle72bf8912006-02-08 13:38:50 +0000513 PTR sys_unlinkat
514 PTR sys_renameat /* 4295 */
515 PTR sys_linkat
516 PTR sys_symlinkat
517 PTR sys_readlinkat
518 PTR sys_fchmodat
519 PTR sys_faccessat /* 4300 */
Joseph S. Myers99d233f2007-01-10 12:30:50 +0000520 PTR compat_sys_pselect6
Arnaud Patard049a31a2009-10-20 10:27:47 +0200521 PTR compat_sys_ppoll
Ralf Baechle72bf8912006-02-08 13:38:50 +0000522 PTR sys_unshare
Ralf Baechlef115da92006-03-31 09:27:20 +0100523 PTR sys_splice
Ralf Baechlea8d587a2006-04-01 07:49:21 +0100524 PTR sys32_sync_file_range /* 4305 */
Ralf Baechle136d47d2006-04-15 11:16:19 +0200525 PTR sys_tee
Ralf Baechle8d13cb22008-12-03 17:03:27 +0000526 PTR compat_sys_vmsplice
Ralf Baechle722cfd92006-07-02 16:31:14 +0100527 PTR compat_sys_move_pages
Atsushi Nemoto7fdeb042006-09-06 22:42:02 +0900528 PTR compat_sys_set_robust_list
529 PTR compat_sys_get_robust_list /* 4310 */
Nicolas Schichan583bb862006-10-18 15:14:55 +0200530 PTR compat_sys_kexec_load
Ralf Baechle991ea262006-10-29 21:07:40 +0000531 PTR sys_getcpu
Ralf Baechlee016c382007-02-24 21:15:11 +0000532 PTR compat_sys_epoll_pwait
Ralf Baechle08253b32007-03-06 17:04:49 +0000533 PTR sys_ioprio_set
534 PTR sys_ioprio_get /* 4315 */
Atsushi Nemoto7a6d4f32007-05-29 23:29:40 +0900535 PTR compat_sys_utimensat
536 PTR compat_sys_signalfd
Ralf Baechle8bdd5142011-04-13 20:50:46 +0200537 PTR sys_ni_syscall /* was timerfd */
Atsushi Nemoto7a6d4f32007-05-29 23:29:40 +0900538 PTR sys_eventfd
Kyle McMartin422efb12007-09-28 13:15:20 -0400539 PTR sys32_fallocate /* 4320 */
Dmitri Vorobiev6783fe62008-02-19 00:02:37 +0300540 PTR sys_timerfd_create
David Daneyc7d16732009-04-16 09:20:17 -0700541 PTR compat_sys_timerfd_gettime
542 PTR compat_sys_timerfd_settime
Ralf Baechle3885b712008-07-31 11:16:43 +0100543 PTR compat_sys_signalfd4
544 PTR sys_eventfd2 /* 4325 */
545 PTR sys_epoll_create1
546 PTR sys_dup3
547 PTR sys_pipe2
548 PTR sys_inotify_init1
Ralf Baechleddd9e912009-04-02 16:59:24 -0700549 PTR compat_sys_preadv /* 4330 */
550 PTR compat_sys_pwritev
David Daney69f16c92009-06-26 09:53:57 -0700551 PTR compat_sys_rt_tgsigqueueinfo
Ingo Molnarcdd6c482009-09-21 12:02:48 +0200552 PTR sys_perf_event_open
Ralf Baechle54822de2009-08-03 17:27:19 +0100553 PTR sys_accept4
David Daney5e844b32010-08-23 14:10:37 -0700554 PTR compat_sys_recvmmsg /* 4335 */
555 PTR sys_fanotify_init
Al Viro91c2e0b2013-03-05 20:10:59 -0500556 PTR compat_sys_fanotify_mark
David Daney5e844b32010-08-23 14:10:37 -0700557 PTR sys_prlimit64
David Daney84ed9432011-03-18 10:37:23 -0700558 PTR sys_name_to_handle_at
559 PTR compat_sys_open_by_handle_at /* 4340 */
560 PTR compat_sys_clock_adjtime
Ralf Baechle1bbf2872011-03-25 18:45:20 +0100561 PTR sys_syncfs
Ralf Baechleb12acf12011-05-28 13:22:58 +0100562 PTR compat_sys_sendmmsg
Eric W. Biederman7b21fdd2011-05-27 19:28:27 -0700563 PTR sys_setns
David Daney8ff85842011-11-08 14:54:55 -0800564 PTR compat_sys_process_vm_readv /* 4345 */
565 PTR compat_sys_process_vm_writev
Ralf Baechlece71d242012-09-14 22:47:15 +0200566 PTR sys_kcmp
Ralf Baechle62951502012-12-28 17:02:56 +0100567 PTR sys_finit_module
James Hogan67762542014-02-04 12:29:01 +0000568 PTR sys_sched_setattr
569 PTR sys_sched_getattr /* 4350 */
Ralf Baechle367f0b52014-05-13 17:56:41 +0200570 PTR sys_renameat2
Kees Cook8855d602014-06-10 15:45:09 -0700571 PTR sys_seccomp
Ralf Baechle42944522014-08-26 03:03:40 +0200572 PTR sys_getrandom
573 PTR sys_memfd_create
Ralf Baechle5df4c8d2014-10-27 03:35:53 +0100574 PTR sys_bpf /* 4355 */
Ralf Baechle389cdc52014-12-17 12:34:04 +0100575 PTR compat_sys_execveat
Ralf Baechle96fc7a92015-09-30 14:24:31 +0200576 PTR sys_userfaultfd
577 PTR sys_membarrier
Eric B Munson784567f2015-11-09 14:58:03 -0800578 PTR sys_mlock2
Ralf Baechlee6c058f2016-02-05 17:15:42 +0100579 PTR sys_copy_file_range /* 4360 */
Ralf Baechle62d8e642016-04-03 09:41:34 +0200580 PTR compat_sys_preadv2
581 PTR compat_sys_pwritev2
Ralf Baechle11ed3e02016-10-12 11:48:39 +0200582 PTR sys_pkey_mprotect
583 PTR sys_pkey_alloc
584 PTR sys_pkey_free /* 4365 */
James Hogan9cb74b52017-03-04 00:41:25 +0000585 PTR sys_statx
Ralf Baechle2a9c2752012-07-12 14:01:31 +0200586 .size sys32_call_table,.-sys32_call_table