Linux Audio

Check our new training course

Linux debugging, profiling, tracing and performance analysis training

Apr 14-17, 2025
Register
Loading...
v5.4
  1/*
  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-99, 2000- 02, 06 Ralf Baechle <ralf@linux-mips.org>
  7 * Copyright (C) 2001 MIPS Technologies, Inc.
  8 * Copyright (C) 2004 Thiemo Seufer
  9 * Copyright (C) 2014 Imagination Technologies Ltd.
 10 */
 11#include <linux/errno.h>
 12#include <asm/asm.h>
 13#include <asm/asmmacro.h>
 14#include <asm/irqflags.h>
 15#include <asm/mipsregs.h>
 16#include <asm/regdef.h>
 17#include <asm/stackframe.h>
 18#include <asm/isadep.h>
 19#include <asm/sysmips.h>
 20#include <asm/thread_info.h>
 21#include <asm/unistd.h>
 22#include <asm/war.h>
 23#include <asm/asm-offsets.h>
 24
 
 
 
 25	.align	5
 26NESTED(handle_sys, PT_SIZE, sp)
 27	.set	noat
 28	SAVE_SOME
 29	TRACE_IRQS_ON_RELOAD
 30	STI
 31	.set	at
 32
 33	lw	t1, PT_EPC(sp)		# skip syscall on return
 34
 
 
 35	addiu	t1, 4			# skip to next instruction
 36	sw	t1, PT_EPC(sp)
 
 
 
 
 
 
 
 37
 38	sw	a3, PT_R26(sp)		# save a3 for syscall restarting
 39
 40	/*
 41	 * More than four arguments.  Try to deal with it by copying the
 42	 * stack arguments from the user stack to the kernel stack.
 43	 * This Sucks (TM).
 44	 */
 45	lw	t0, PT_R29(sp)		# get old user stack pointer
 46
 47	/*
 48	 * We intentionally keep the kernel stack a little below the top of
 49	 * userspace so we don't have to do a slower byte accurate check here.
 50	 */
 51	lw	t5, TI_ADDR_LIMIT($28)
 52	addu	t4, t0, 32
 53	and	t5, t4
 54	bltz	t5, bad_stack		# -> sp is bad
 55
 56	/*
 57	 * Ok, copy the args from the luser stack to the kernel stack.
 
 
 58	 */
 59
 60	.set    push
 61	.set    noreorder
 62	.set	nomacro
 63
 64load_a4: user_lw(t5, 16(t0))		# argument #5 from usp
 65load_a5: user_lw(t6, 20(t0))		# argument #6 from usp
 66load_a6: user_lw(t7, 24(t0))		# argument #7 from usp
 67load_a7: user_lw(t8, 28(t0))		# argument #8 from usp
 68loads_done:
 69
 70	sw	t5, 16(sp)		# argument #5 to ksp
 71	sw	t6, 20(sp)		# argument #6 to ksp
 72	sw	t7, 24(sp)		# argument #7 to ksp
 73	sw	t8, 28(sp)		# argument #8 to ksp
 74	.set	pop
 75
 76	.section __ex_table,"a"
 77	PTR	load_a4, bad_stack_a4
 78	PTR	load_a5, bad_stack_a5
 79	PTR	load_a6, bad_stack_a6
 80	PTR	load_a7, bad_stack_a7
 81	.previous
 82
 83	lw	t0, TI_FLAGS($28)	# syscall tracing enabled?
 84	li	t1, _TIF_WORK_SYSCALL_ENTRY
 85	and	t0, t1
 86	bnez	t0, syscall_trace_entry # -> yes
 87syscall_common:
 88	subu	v0, v0, __NR_O32_Linux	# check syscall number
 89	sltiu	t0, v0, __NR_O32_Linux_syscalls
 90	beqz	t0, illegal_syscall
 91
 92	sll	t0, v0, 2
 93	la	t1, sys_call_table
 94	addu	t1, t0
 95	lw	t2, (t1)		# syscall routine
 96
 97	beqz	t2, illegal_syscall
 98
 99	jalr	t2			# Do The Real Thing (TM)
100
101	li	t0, -EMAXERRNO - 1	# error?
102	sltu	t0, t0, v0
103	sw	t0, PT_R7(sp)		# set error flag
104	beqz	t0, 1f
105
106	lw	t1, PT_R2(sp)		# syscall number
107	negu	v0			# error
108	sw	t1, PT_R0(sp)		# save it for syscall restarting
1091:	sw	v0, PT_R2(sp)		# result
110
111o32_syscall_exit:
112	j	syscall_exit_partial
113
114/* ------------------------------------------------------------------------ */
115
116syscall_trace_entry:
117	SAVE_STATIC
 
118	move	a0, sp
119
120	/*
121	 * syscall number is in v0 unless we called syscall(__NR_###)
122	 * where the real syscall number is in a0
123	 */
124	move	a1, v0
125	subu	t2, v0,  __NR_O32_Linux
126	bnez	t2, 1f /* __NR_syscall at offset 0 */
127	lw	a1, PT_R4(sp)
128
1291:	jal	syscall_trace_enter
130
131	bltz	v0, 1f			# seccomp failed? Skip syscall
132
 
133	RESTORE_STATIC
134	lw	v0, PT_R2(sp)		# Restore syscall (maybe modified)
135	lw	a0, PT_R4(sp)		# Restore argument registers
136	lw	a1, PT_R5(sp)
137	lw	a2, PT_R6(sp)
138	lw	a3, PT_R7(sp)
139	j	syscall_common
140
1411:	j	syscall_exit
 
 
 
 
 
 
 
 
 
 
142
143/* ------------------------------------------------------------------------ */
144
145	/*
146	 * Our open-coded access area sanity test for the stack pointer
147	 * failed. We probably should handle this case a bit more drastic.
148	 */
149bad_stack:
150	li	v0, EFAULT
151	sw	v0, PT_R2(sp)
152	li	t0, 1				# set error flag
153	sw	t0, PT_R7(sp)
154	j	o32_syscall_exit
155
156bad_stack_a4:
157	li	t5, 0
158	b	load_a5
159
160bad_stack_a5:
161	li	t6, 0
162	b	load_a6
163
164bad_stack_a6:
165	li	t7, 0
166	b	load_a7
167
168bad_stack_a7:
169	li	t8, 0
170	b	loads_done
171
172	/*
173	 * The system call does not exist in this kernel
174	 */
175illegal_syscall:
176	li	v0, ENOSYS			# error
177	sw	v0, PT_R2(sp)
178	li	t0, 1				# set error flag
179	sw	t0, PT_R7(sp)
180	j	o32_syscall_exit
181	END(handle_sys)
182
183	LEAF(sys_syscall)
184	subu	t0, a0, __NR_O32_Linux	# check syscall number
185	sltiu	v0, t0, __NR_O32_Linux_syscalls
186	beqz	t0, einval		# do not recurse
187	sll	t1, t0, 2
188	beqz	v0, einval
189	lw	t2, sys_call_table(t1)		# syscall routine
190
 
 
 
 
 
191	move	a0, a1				# shift argument registers
192	move	a1, a2
193	move	a2, a3
194	lw	a3, 16(sp)
195	lw	t4, 20(sp)
196	lw	t5, 24(sp)
197	lw	t6, 28(sp)
198	sw	t4, 16(sp)
199	sw	t5, 20(sp)
200	sw	t6, 24(sp)
 
 
 
 
 
201	jr	t2
202	/* Unreached */
203
204einval: li	v0, -ENOSYS
205	jr	ra
206	END(sys_syscall)
207
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
208#ifdef CONFIG_MIPS_MT_FPAFF
209	/*
210	 * For FPU affinity scheduling on MIPS MT processors, we need to
211	 * intercept sys_sched_xxxaffinity() calls until we get a proper hook
212	 * in kernel/sched/core.c.  Considered only temporary we only support
213	 * these hooks for the 32-bit kernel - there is no MIPS64 MT processor
214	 * atm.
215	 */
216#define sys_sched_setaffinity	mipsmt_sys_sched_setaffinity
217#define sys_sched_getaffinity	mipsmt_sys_sched_getaffinity
 
 
 
218#endif /* CONFIG_MIPS_MT_FPAFF */
219
220#define __SYSCALL(nr, entry) 	PTR entry
221	.align	2
222	.type	sys_call_table, @object
223EXPORT(sys_call_table)
224#include <asm/syscall_table_32_o32.h>
225#undef __SYSCALL
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v3.15
  1/*
  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-99, 2000- 02, 06 Ralf Baechle <ralf@linux-mips.org>
  7 * Copyright (C) 2001 MIPS Technologies, Inc.
  8 * Copyright (C) 2004 Thiemo Seufer
  9 * Copyright (C) 2014 Imagination Technologies Ltd.
 10 */
 11#include <linux/errno.h>
 12#include <asm/asm.h>
 13#include <asm/asmmacro.h>
 14#include <asm/irqflags.h>
 15#include <asm/mipsregs.h>
 16#include <asm/regdef.h>
 17#include <asm/stackframe.h>
 18#include <asm/isadep.h>
 19#include <asm/sysmips.h>
 20#include <asm/thread_info.h>
 21#include <asm/unistd.h>
 22#include <asm/war.h>
 23#include <asm/asm-offsets.h>
 24
 25/* Highest syscall used of any syscall flavour */
 26#define MAX_SYSCALL_NO	__NR_O32_Linux + __NR_O32_Linux_syscalls
 27
 28	.align	5
 29NESTED(handle_sys, PT_SIZE, sp)
 30	.set	noat
 31	SAVE_SOME
 32	TRACE_IRQS_ON_RELOAD
 33	STI
 34	.set	at
 35
 36	lw	t1, PT_EPC(sp)		# skip syscall on return
 37
 38	subu	v0, v0, __NR_O32_Linux	# check syscall number
 39	sltiu	t0, v0, __NR_O32_Linux_syscalls + 1
 40	addiu	t1, 4			# skip to next instruction
 41	sw	t1, PT_EPC(sp)
 42	beqz	t0, illegal_syscall
 43
 44	sll	t0, v0, 2
 45	la	t1, sys_call_table
 46	addu	t1, t0
 47	lw	t2, (t1)		# syscall routine
 48	beqz	t2, illegal_syscall
 49
 50	sw	a3, PT_R26(sp)		# save a3 for syscall restarting
 51
 52	/*
 53	 * More than four arguments.  Try to deal with it by copying the
 54	 * stack arguments from the user stack to the kernel stack.
 55	 * This Sucks (TM).
 56	 */
 57	lw	t0, PT_R29(sp)		# get old user stack pointer
 58
 59	/*
 60	 * We intentionally keep the kernel stack a little below the top of
 61	 * userspace so we don't have to do a slower byte accurate check here.
 62	 */
 63	lw	t5, TI_ADDR_LIMIT($28)
 64	addu	t4, t0, 32
 65	and	t5, t4
 66	bltz	t5, bad_stack		# -> sp is bad
 67
 68	/*
 69	 * Ok, copy the args from the luser stack to the kernel stack.
 70	 * t3 is the precomputed number of instruction bytes needed to
 71	 * load or store arguments 6-8.
 72	 */
 73
 74	.set    push
 75	.set    noreorder
 76	.set	nomacro
 77
 781:	user_lw(t5, 16(t0))		# argument #5 from usp
 794:	user_lw(t6, 20(t0))		# argument #6 from usp
 803:	user_lw(t7, 24(t0))		# argument #7 from usp
 812:	user_lw(t8, 28(t0))		# argument #8 from usp
 
 82
 83	sw	t5, 16(sp)		# argument #5 to ksp
 84	sw	t6, 20(sp)		# argument #6 to ksp
 85	sw	t7, 24(sp)		# argument #7 to ksp
 86	sw	t8, 28(sp)		# argument #8 to ksp
 87	.set	pop
 88
 89	.section __ex_table,"a"
 90	PTR	1b,bad_stack
 91	PTR	2b,bad_stack
 92	PTR	3b,bad_stack
 93	PTR	4b,bad_stack
 94	.previous
 95
 96	lw	t0, TI_FLAGS($28)	# syscall tracing enabled?
 97	li	t1, _TIF_WORK_SYSCALL_ENTRY
 98	and	t0, t1
 99	bnez	t0, syscall_trace_entry # -> yes
 
 
 
 
 
 
 
 
 
 
 
100
101	jalr	t2			# Do The Real Thing (TM)
102
103	li	t0, -EMAXERRNO - 1	# error?
104	sltu	t0, t0, v0
105	sw	t0, PT_R7(sp)		# set error flag
106	beqz	t0, 1f
107
108	lw	t1, PT_R2(sp)		# syscall number
109	negu	v0			# error
110	sw	t1, PT_R0(sp)		# save it for syscall restarting
1111:	sw	v0, PT_R2(sp)		# result
112
113o32_syscall_exit:
114	j	syscall_exit_partial
115
116/* ------------------------------------------------------------------------ */
117
118syscall_trace_entry:
119	SAVE_STATIC
120	move	s0, t2
121	move	a0, sp
122
123	/*
124	 * syscall number is in v0 unless we called syscall(__NR_###)
125	 * where the real syscall number is in a0
126	 */
127	addiu	a1, v0,  __NR_O32_Linux
128	bnez	v0, 1f /* __NR_syscall at offset 0 */
 
129	lw	a1, PT_R4(sp)
130
1311:	jal	syscall_trace_enter
132
133	bltz	v0, 2f			# seccomp failed? Skip syscall
134
135	move	t0, s0
136	RESTORE_STATIC
 
137	lw	a0, PT_R4(sp)		# Restore argument registers
138	lw	a1, PT_R5(sp)
139	lw	a2, PT_R6(sp)
140	lw	a3, PT_R7(sp)
141	jalr	t0
142
143	li	t0, -EMAXERRNO - 1	# error?
144	sltu	t0, t0, v0
145	sw	t0, PT_R7(sp)		# set error flag
146	beqz	t0, 1f
147
148	lw	t1, PT_R2(sp)		# syscall number
149	negu	v0			# error
150	sw	t1, PT_R0(sp)		# save it for syscall restarting
1511:	sw	v0, PT_R2(sp)		# result
152
1532:	j	syscall_exit
154
155/* ------------------------------------------------------------------------ */
156
157	/*
158	 * The stackpointer for a call with more than 4 arguments is bad.
159	 * We probably should handle this case a bit more drastic.
160	 */
161bad_stack:
162	li	v0, EFAULT
163	sw	v0, PT_R2(sp)
164	li	t0, 1				# set error flag
165	sw	t0, PT_R7(sp)
166	j	o32_syscall_exit
167
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168	/*
169	 * The system call does not exist in this kernel
170	 */
171illegal_syscall:
172	li	v0, ENOSYS			# error
173	sw	v0, PT_R2(sp)
174	li	t0, 1				# set error flag
175	sw	t0, PT_R7(sp)
176	j	o32_syscall_exit
177	END(handle_sys)
178
179	LEAF(sys_syscall)
180	subu	t0, a0, __NR_O32_Linux	# check syscall number
181	sltiu	v0, t0, __NR_O32_Linux_syscalls + 1
182	beqz	t0, einval		# do not recurse
183	sll	t1, t0, 2
184	beqz	v0, einval
185	lw	t2, sys_call_table(t1)		# syscall routine
186
187	/* Some syscalls like execve get their arguments from struct pt_regs
188	   and claim zero arguments in the syscall table. Thus we have to
189	   assume the worst case and shuffle around all potential arguments.
190	   If you want performance, don't use indirect syscalls. */
191
192	move	a0, a1				# shift argument registers
193	move	a1, a2
194	move	a2, a3
195	lw	a3, 16(sp)
196	lw	t4, 20(sp)
197	lw	t5, 24(sp)
198	lw	t6, 28(sp)
199	sw	t4, 16(sp)
200	sw	t5, 20(sp)
201	sw	t6, 24(sp)
202	sw	a0, PT_R4(sp)			# .. and push back a0 - a3, some
203	sw	a1, PT_R5(sp)			# syscalls expect them there
204	sw	a2, PT_R6(sp)
205	sw	a3, PT_R7(sp)
206	sw	a3, PT_R26(sp)			# update a3 for syscall restarting
207	jr	t2
208	/* Unreached */
209
210einval: li	v0, -ENOSYS
211	jr	ra
212	END(sys_syscall)
213
214	.align	2
215	.type	sys_call_table, @object
216EXPORT(sys_call_table)
217	PTR	sys_syscall			/* 4000 */
218	PTR	sys_exit
219	PTR	__sys_fork
220	PTR	sys_read
221	PTR	sys_write
222	PTR	sys_open			/* 4005 */
223	PTR	sys_close
224	PTR	sys_waitpid
225	PTR	sys_creat
226	PTR	sys_link
227	PTR	sys_unlink			/* 4010 */
228	PTR	sys_execve
229	PTR	sys_chdir
230	PTR	sys_time
231	PTR	sys_mknod
232	PTR	sys_chmod			/* 4015 */
233	PTR	sys_lchown
234	PTR	sys_ni_syscall
235	PTR	sys_ni_syscall			/* was sys_stat */
236	PTR	sys_lseek
237	PTR	sys_getpid			/* 4020 */
238	PTR	sys_mount
239	PTR	sys_oldumount
240	PTR	sys_setuid
241	PTR	sys_getuid
242	PTR	sys_stime			/* 4025 */
243	PTR	sys_ptrace
244	PTR	sys_alarm
245	PTR	sys_ni_syscall			/* was sys_fstat */
246	PTR	sys_pause
247	PTR	sys_utime			/* 4030 */
248	PTR	sys_ni_syscall
249	PTR	sys_ni_syscall
250	PTR	sys_access
251	PTR	sys_nice
252	PTR	sys_ni_syscall			/* 4035 */
253	PTR	sys_sync
254	PTR	sys_kill
255	PTR	sys_rename
256	PTR	sys_mkdir
257	PTR	sys_rmdir			/* 4040 */
258	PTR	sys_dup
259	PTR	sysm_pipe
260	PTR	sys_times
261	PTR	sys_ni_syscall
262	PTR	sys_brk				/* 4045 */
263	PTR	sys_setgid
264	PTR	sys_getgid
265	PTR	sys_ni_syscall			/* was signal(2) */
266	PTR	sys_geteuid
267	PTR	sys_getegid			/* 4050 */
268	PTR	sys_acct
269	PTR	sys_umount
270	PTR	sys_ni_syscall
271	PTR	sys_ioctl
272	PTR	sys_fcntl			/* 4055 */
273	PTR	sys_ni_syscall
274	PTR	sys_setpgid
275	PTR	sys_ni_syscall
276	PTR	sys_olduname
277	PTR	sys_umask			/* 4060 */
278	PTR	sys_chroot
279	PTR	sys_ustat
280	PTR	sys_dup2
281	PTR	sys_getppid
282	PTR	sys_getpgrp			/* 4065 */
283	PTR	sys_setsid
284	PTR	sys_sigaction
285	PTR	sys_sgetmask
286	PTR	sys_ssetmask
287	PTR	sys_setreuid			/* 4070 */
288	PTR	sys_setregid
289	PTR	sys_sigsuspend
290	PTR	sys_sigpending
291	PTR	sys_sethostname
292	PTR	sys_setrlimit			/* 4075 */
293	PTR	sys_getrlimit
294	PTR	sys_getrusage
295	PTR	sys_gettimeofday
296	PTR	sys_settimeofday
297	PTR	sys_getgroups			/* 4080 */
298	PTR	sys_setgroups
299	PTR	sys_ni_syscall			/* old_select */
300	PTR	sys_symlink
301	PTR	sys_ni_syscall			/* was sys_lstat */
302	PTR	sys_readlink			/* 4085 */
303	PTR	sys_uselib
304	PTR	sys_swapon
305	PTR	sys_reboot
306	PTR	sys_old_readdir
307	PTR	sys_mips_mmap			/* 4090 */
308	PTR	sys_munmap
309	PTR	sys_truncate
310	PTR	sys_ftruncate
311	PTR	sys_fchmod
312	PTR	sys_fchown			/* 4095 */
313	PTR	sys_getpriority
314	PTR	sys_setpriority
315	PTR	sys_ni_syscall
316	PTR	sys_statfs
317	PTR	sys_fstatfs			/* 4100 */
318	PTR	sys_ni_syscall			/* was ioperm(2) */
319	PTR	sys_socketcall
320	PTR	sys_syslog
321	PTR	sys_setitimer
322	PTR	sys_getitimer			/* 4105 */
323	PTR	sys_newstat
324	PTR	sys_newlstat
325	PTR	sys_newfstat
326	PTR	sys_uname
327	PTR	sys_ni_syscall			/* 4110 was iopl(2) */
328	PTR	sys_vhangup
329	PTR	sys_ni_syscall			/* was sys_idle() */
330	PTR	sys_ni_syscall			/* was sys_vm86 */
331	PTR	sys_wait4
332	PTR	sys_swapoff			/* 4115 */
333	PTR	sys_sysinfo
334	PTR	sys_ipc
335	PTR	sys_fsync
336	PTR	sys_sigreturn
337	PTR	__sys_clone			/* 4120 */
338	PTR	sys_setdomainname
339	PTR	sys_newuname
340	PTR	sys_ni_syscall			/* sys_modify_ldt */
341	PTR	sys_adjtimex
342	PTR	sys_mprotect			/* 4125 */
343	PTR	sys_sigprocmask
344	PTR	sys_ni_syscall			/* was create_module */
345	PTR	sys_init_module
346	PTR	sys_delete_module
347	PTR	sys_ni_syscall			/* 4130 was get_kernel_syms */
348	PTR	sys_quotactl
349	PTR	sys_getpgid
350	PTR	sys_fchdir
351	PTR	sys_bdflush
352	PTR	sys_sysfs			/* 4135 */
353	PTR	sys_personality
354	PTR	sys_ni_syscall			/* for afs_syscall */
355	PTR	sys_setfsuid
356	PTR	sys_setfsgid
357	PTR	sys_llseek			/* 4140 */
358	PTR	sys_getdents
359	PTR	sys_select
360	PTR	sys_flock
361	PTR	sys_msync
362	PTR	sys_readv			/* 4145 */
363	PTR	sys_writev
364	PTR	sys_cacheflush
365	PTR	sys_cachectl
366	PTR	sys_sysmips
367	PTR	sys_ni_syscall			/* 4150 */
368	PTR	sys_getsid
369	PTR	sys_fdatasync
370	PTR	sys_sysctl
371	PTR	sys_mlock
372	PTR	sys_munlock			/* 4155 */
373	PTR	sys_mlockall
374	PTR	sys_munlockall
375	PTR	sys_sched_setparam
376	PTR	sys_sched_getparam
377	PTR	sys_sched_setscheduler		/* 4160 */
378	PTR	sys_sched_getscheduler
379	PTR	sys_sched_yield
380	PTR	sys_sched_get_priority_max
381	PTR	sys_sched_get_priority_min
382	PTR	sys_sched_rr_get_interval	/* 4165 */
383	PTR	sys_nanosleep
384	PTR	sys_mremap
385	PTR	sys_accept
386	PTR	sys_bind
387	PTR	sys_connect			/* 4170 */
388	PTR	sys_getpeername
389	PTR	sys_getsockname
390	PTR	sys_getsockopt
391	PTR	sys_listen
392	PTR	sys_recv			/* 4175 */
393	PTR	sys_recvfrom
394	PTR	sys_recvmsg
395	PTR	sys_send
396	PTR	sys_sendmsg
397	PTR	sys_sendto			/* 4180 */
398	PTR	sys_setsockopt
399	PTR	sys_shutdown
400	PTR	sys_socket
401	PTR	sys_socketpair
402	PTR	sys_setresuid			/* 4185 */
403	PTR	sys_getresuid
404	PTR	sys_ni_syscall			/* was sys_query_module */
405	PTR	sys_poll
406	PTR	sys_ni_syscall			/* was nfsservctl */
407	PTR	sys_setresgid			/* 4190 */
408	PTR	sys_getresgid
409	PTR	sys_prctl
410	PTR	sys_rt_sigreturn
411	PTR	sys_rt_sigaction
412	PTR	sys_rt_sigprocmask		/* 4195 */
413	PTR	sys_rt_sigpending
414	PTR	sys_rt_sigtimedwait
415	PTR	sys_rt_sigqueueinfo
416	PTR	sys_rt_sigsuspend
417	PTR	sys_pread64			/* 4200 */
418	PTR	sys_pwrite64
419	PTR	sys_chown
420	PTR	sys_getcwd
421	PTR	sys_capget
422	PTR	sys_capset			/* 4205 */
423	PTR	sys_sigaltstack
424	PTR	sys_sendfile
425	PTR	sys_ni_syscall
426	PTR	sys_ni_syscall
427	PTR	sys_mips_mmap2			/* 4210 */
428	PTR	sys_truncate64
429	PTR	sys_ftruncate64
430	PTR	sys_stat64
431	PTR	sys_lstat64
432	PTR	sys_fstat64			/* 4215 */
433	PTR	sys_pivot_root
434	PTR	sys_mincore
435	PTR	sys_madvise
436	PTR	sys_getdents64
437	PTR	sys_fcntl64			/* 4220 */
438	PTR	sys_ni_syscall
439	PTR	sys_gettid
440	PTR	sys_readahead
441	PTR	sys_setxattr
442	PTR	sys_lsetxattr			/* 4225 */
443	PTR	sys_fsetxattr
444	PTR	sys_getxattr
445	PTR	sys_lgetxattr
446	PTR	sys_fgetxattr
447	PTR	sys_listxattr			/* 4230 */
448	PTR	sys_llistxattr
449	PTR	sys_flistxattr
450	PTR	sys_removexattr
451	PTR	sys_lremovexattr
452	PTR	sys_fremovexattr		/* 4235 */
453	PTR	sys_tkill
454	PTR	sys_sendfile64
455	PTR	sys_futex
456#ifdef CONFIG_MIPS_MT_FPAFF
457	/*
458	 * For FPU affinity scheduling on MIPS MT processors, we need to
459	 * intercept sys_sched_xxxaffinity() calls until we get a proper hook
460	 * in kernel/sched/core.c.  Considered only temporary we only support
461	 * these hooks for the 32-bit kernel - there is no MIPS64 MT processor
462	 * atm.
463	 */
464	PTR	mipsmt_sys_sched_setaffinity
465	PTR	mipsmt_sys_sched_getaffinity
466#else
467	PTR	sys_sched_setaffinity
468	PTR	sys_sched_getaffinity		/* 4240 */
469#endif /* CONFIG_MIPS_MT_FPAFF */
470	PTR	sys_io_setup
471	PTR	sys_io_destroy
472	PTR	sys_io_getevents
473	PTR	sys_io_submit
474	PTR	sys_io_cancel			/* 4245 */
475	PTR	sys_exit_group
476	PTR	sys_lookup_dcookie
477	PTR	sys_epoll_create
478	PTR	sys_epoll_ctl
479	PTR	sys_epoll_wait			/* 4250 */
480	PTR	sys_remap_file_pages
481	PTR	sys_set_tid_address
482	PTR	sys_restart_syscall
483	PTR	sys_fadvise64_64
484	PTR	sys_statfs64			/* 4255 */
485	PTR	sys_fstatfs64
486	PTR	sys_timer_create
487	PTR	sys_timer_settime
488	PTR	sys_timer_gettime
489	PTR	sys_timer_getoverrun		/* 4260 */
490	PTR	sys_timer_delete
491	PTR	sys_clock_settime
492	PTR	sys_clock_gettime
493	PTR	sys_clock_getres
494	PTR	sys_clock_nanosleep		/* 4265 */
495	PTR	sys_tgkill
496	PTR	sys_utimes
497	PTR	sys_mbind
498	PTR	sys_ni_syscall			/* sys_get_mempolicy */
499	PTR	sys_ni_syscall			/* 4270 sys_set_mempolicy */
500	PTR	sys_mq_open
501	PTR	sys_mq_unlink
502	PTR	sys_mq_timedsend
503	PTR	sys_mq_timedreceive
504	PTR	sys_mq_notify			/* 4275 */
505	PTR	sys_mq_getsetattr
506	PTR	sys_ni_syscall			/* sys_vserver */
507	PTR	sys_waitid
508	PTR	sys_ni_syscall			/* available, was setaltroot */
509	PTR	sys_add_key			/* 4280 */
510	PTR	sys_request_key
511	PTR	sys_keyctl
512	PTR	sys_set_thread_area
513	PTR	sys_inotify_init
514	PTR	sys_inotify_add_watch		/* 4285 */
515	PTR	sys_inotify_rm_watch
516	PTR	sys_migrate_pages
517	PTR	sys_openat
518	PTR	sys_mkdirat
519	PTR	sys_mknodat			/* 4290 */
520	PTR	sys_fchownat
521	PTR	sys_futimesat
522	PTR	sys_fstatat64
523	PTR	sys_unlinkat
524	PTR	sys_renameat			/* 4295 */
525	PTR	sys_linkat
526	PTR	sys_symlinkat
527	PTR	sys_readlinkat
528	PTR	sys_fchmodat
529	PTR	sys_faccessat			/* 4300 */
530	PTR	sys_pselect6
531	PTR	sys_ppoll
532	PTR	sys_unshare
533	PTR	sys_splice
534	PTR	sys_sync_file_range		/* 4305 */
535	PTR	sys_tee
536	PTR	sys_vmsplice
537	PTR	sys_move_pages
538	PTR	sys_set_robust_list
539	PTR	sys_get_robust_list		/* 4310 */
540	PTR	sys_kexec_load
541	PTR	sys_getcpu
542	PTR	sys_epoll_pwait
543	PTR	sys_ioprio_set
544	PTR	sys_ioprio_get			/* 4315 */
545	PTR	sys_utimensat
546	PTR	sys_signalfd
547	PTR	sys_ni_syscall			/* was timerfd */
548	PTR	sys_eventfd
549	PTR	sys_fallocate			/* 4320 */
550	PTR	sys_timerfd_create
551	PTR	sys_timerfd_gettime
552	PTR	sys_timerfd_settime
553	PTR	sys_signalfd4
554	PTR	sys_eventfd2			/* 4325 */
555	PTR	sys_epoll_create1
556	PTR	sys_dup3
557	PTR	sys_pipe2
558	PTR	sys_inotify_init1
559	PTR	sys_preadv			/* 4330 */
560	PTR	sys_pwritev
561	PTR	sys_rt_tgsigqueueinfo
562	PTR	sys_perf_event_open
563	PTR	sys_accept4
564	PTR	sys_recvmmsg			/* 4335 */
565	PTR	sys_fanotify_init
566	PTR	sys_fanotify_mark
567	PTR	sys_prlimit64
568	PTR	sys_name_to_handle_at
569	PTR	sys_open_by_handle_at		/* 4340 */
570	PTR	sys_clock_adjtime
571	PTR	sys_syncfs
572	PTR	sys_sendmmsg
573	PTR	sys_setns
574	PTR	sys_process_vm_readv		/* 4345 */
575	PTR	sys_process_vm_writev
576	PTR	sys_kcmp
577	PTR	sys_finit_module
578	PTR	sys_sched_setattr
579	PTR	sys_sched_getattr		/* 4350 */
580	PTR	sys_renameat2