xref: /openbmc/linux/arch/mips/kernel/scall32-o32.S (revision 9d37c405ed7e4bb10798c37ef4e642b682425c4e)
11da177e4SLinus Torvalds/*
21da177e4SLinus Torvalds * This file is subject to the terms and conditions of the GNU General Public
31da177e4SLinus Torvalds * License.  See the file "COPYING" in the main directory of this archive
41da177e4SLinus Torvalds * for more details.
51da177e4SLinus Torvalds *
6192ef366SRalf Baechle * Copyright (C) 1995-99, 2000- 02, 06 Ralf Baechle <ralf@linux-mips.org>
71da177e4SLinus Torvalds * Copyright (C) 2001 MIPS Technologies, Inc.
81da177e4SLinus Torvalds * Copyright (C) 2004 Thiemo Seufer
91da177e4SLinus Torvalds */
101da177e4SLinus Torvalds#include <linux/errno.h>
111da177e4SLinus Torvalds#include <asm/asm.h>
121da177e4SLinus Torvalds#include <asm/asmmacro.h>
13192ef366SRalf Baechle#include <asm/irqflags.h>
141da177e4SLinus Torvalds#include <asm/mipsregs.h>
151da177e4SLinus Torvalds#include <asm/regdef.h>
161da177e4SLinus Torvalds#include <asm/stackframe.h>
171da177e4SLinus Torvalds#include <asm/isadep.h>
181da177e4SLinus Torvalds#include <asm/sysmips.h>
191da177e4SLinus Torvalds#include <asm/thread_info.h>
201da177e4SLinus Torvalds#include <asm/unistd.h>
211da177e4SLinus Torvalds#include <asm/war.h>
22048eb582SSam Ravnborg#include <asm/asm-offsets.h>
231da177e4SLinus Torvalds
241da177e4SLinus Torvalds/* Highest syscall used of any syscall flavour */
251da177e4SLinus Torvalds#define MAX_SYSCALL_NO	__NR_O32_Linux + __NR_O32_Linux_syscalls
261da177e4SLinus Torvalds
271da177e4SLinus Torvalds	.align	5
281da177e4SLinus TorvaldsNESTED(handle_sys, PT_SIZE, sp)
291da177e4SLinus Torvalds	.set	noat
301da177e4SLinus Torvalds	SAVE_SOME
31eae6c0daSAtsushi Nemoto	TRACE_IRQS_ON_RELOAD
321da177e4SLinus Torvalds	STI
331da177e4SLinus Torvalds	.set	at
341da177e4SLinus Torvalds
351da177e4SLinus Torvalds	lw	t1, PT_EPC(sp)		# skip syscall on return
361da177e4SLinus Torvalds
371da177e4SLinus Torvalds	subu	v0, v0, __NR_O32_Linux	# check syscall number
381da177e4SLinus Torvalds	sltiu	t0, v0, __NR_O32_Linux_syscalls + 1
391da177e4SLinus Torvalds	addiu	t1, 4			# skip to next instruction
401da177e4SLinus Torvalds	sw	t1, PT_EPC(sp)
411da177e4SLinus Torvalds	beqz	t0, illegal_syscall
421da177e4SLinus Torvalds
4346e12c07SRalf Baechle	sll	t0, v0, 2
441da177e4SLinus Torvalds	la	t1, sys_call_table
451da177e4SLinus Torvalds	addu	t1, t0
461da177e4SLinus Torvalds	lw	t2, (t1)		# syscall routine
471da177e4SLinus Torvalds	beqz	t2, illegal_syscall
481da177e4SLinus Torvalds
491da177e4SLinus Torvalds	sw	a3, PT_R26(sp)		# save a3 for syscall restarting
501da177e4SLinus Torvalds
5146e12c07SRalf Baechle	/*
5246e12c07SRalf Baechle	 * More than four arguments.  Try to deal with it by copying the
5346e12c07SRalf Baechle	 * stack arguments from the user stack to the kernel stack.
5446e12c07SRalf Baechle	 * This Sucks (TM).
5546e12c07SRalf Baechle	 */
5646e12c07SRalf Baechle	lw	t0, PT_R29(sp)		# get old user stack pointer
5746e12c07SRalf Baechle
5846e12c07SRalf Baechle	/*
5946e12c07SRalf Baechle	 * We intentionally keep the kernel stack a little below the top of
6046e12c07SRalf Baechle	 * userspace so we don't have to do a slower byte accurate check here.
6146e12c07SRalf Baechle	 */
6246e12c07SRalf Baechle	lw	t5, TI_ADDR_LIMIT($28)
6346e12c07SRalf Baechle	addu	t4, t0, 32
6446e12c07SRalf Baechle	and	t5, t4
6546e12c07SRalf Baechle	bltz	t5, bad_stack		# -> sp is bad
6646e12c07SRalf Baechle
6746e12c07SRalf Baechle	/*
6846e12c07SRalf Baechle	 * Ok, copy the args from the luser stack to the kernel stack.
6946e12c07SRalf Baechle	 * t3 is the precomputed number of instruction bytes needed to
7046e12c07SRalf Baechle	 * load or store arguments 6-8.
7146e12c07SRalf Baechle	 */
7246e12c07SRalf Baechle
7346e12c07SRalf Baechle	.set    push
7446e12c07SRalf Baechle	.set    noreorder
7546e12c07SRalf Baechle	.set	nomacro
7646e12c07SRalf Baechle
7746e12c07SRalf Baechle1:	lw	t5, 16(t0)		# argument #5 from usp
7846e12c07SRalf Baechle4:	lw	t6, 20(t0)		# argument #6 from usp
7946e12c07SRalf Baechle3:	lw	t7, 24(t0)		# argument #7 from usp
8046e12c07SRalf Baechle2:	lw	t8, 28(t0)		# argument #8 from usp
8146e12c07SRalf Baechle
8246e12c07SRalf Baechle	sw	t5, 16(sp)		# argument #5 to ksp
8346e12c07SRalf Baechle	sw	t6, 20(sp)		# argument #6 to ksp
8446e12c07SRalf Baechle	sw	t7, 24(sp)		# argument #7 to ksp
8546e12c07SRalf Baechle	sw	t8, 28(sp)		# argument #8 to ksp
8646e12c07SRalf Baechle	.set	pop
8746e12c07SRalf Baechle
8846e12c07SRalf Baechle	.section __ex_table,"a"
8946e12c07SRalf Baechle	PTR	1b,bad_stack
9046e12c07SRalf Baechle	PTR	2b,bad_stack
9146e12c07SRalf Baechle	PTR	3b,bad_stack
9246e12c07SRalf Baechle	PTR	4b,bad_stack
9346e12c07SRalf Baechle	.previous
9446e12c07SRalf Baechle
951da177e4SLinus Torvalds	lw	t0, TI_FLAGS($28)	# syscall tracing enabled?
96e7f3b48aSRalf Baechle	li	t1, _TIF_WORK_SYSCALL_ENTRY
971da177e4SLinus Torvalds	and	t0, t1
981da177e4SLinus Torvalds	bnez	t0, syscall_trace_entry # -> yes
991da177e4SLinus Torvalds
1001da177e4SLinus Torvalds	jalr	t2			# Do The Real Thing (TM)
1011da177e4SLinus Torvalds
1021da177e4SLinus Torvalds	li	t0, -EMAXERRNO - 1	# error?
1031da177e4SLinus Torvalds	sltu	t0, t0, v0
1041da177e4SLinus Torvalds	sw	t0, PT_R7(sp)		# set error flag
1051da177e4SLinus Torvalds	beqz	t0, 1f
1061da177e4SLinus Torvalds
1078f5a00ebSAl Viro	lw	t1, PT_R2(sp)		# syscall number
1081da177e4SLinus Torvalds	negu	v0			# error
1098f5a00ebSAl Viro	sw	t1, PT_R0(sp)		# save it for syscall restarting
1101da177e4SLinus Torvalds1:	sw	v0, PT_R2(sp)		# result
1111da177e4SLinus Torvalds
1121da177e4SLinus Torvaldso32_syscall_exit:
11302f884edSAl Viro	j	syscall_exit_partial
1141da177e4SLinus Torvalds
1151da177e4SLinus Torvalds/* ------------------------------------------------------------------------ */
1161da177e4SLinus Torvalds
1171da177e4SLinus Torvaldssyscall_trace_entry:
1181da177e4SLinus Torvalds	SAVE_STATIC
1191da177e4SLinus Torvalds	move	s0, t2
1201da177e4SLinus Torvalds	move	a0, sp
1218b659a39SRalf Baechle	jal	syscall_trace_enter
1221da177e4SLinus Torvalds
123*9d37c405SMarkos Chandras	bltz	v0, 2f			# seccomp failed? Skip syscall
124*9d37c405SMarkos Chandras
12504a7052cSRalf Baechle	move	t0, s0
12604a7052cSRalf Baechle	RESTORE_STATIC
1271da177e4SLinus Torvalds	lw	a0, PT_R4(sp)		# Restore argument registers
1281da177e4SLinus Torvalds	lw	a1, PT_R5(sp)
1291da177e4SLinus Torvalds	lw	a2, PT_R6(sp)
1301da177e4SLinus Torvalds	lw	a3, PT_R7(sp)
13104a7052cSRalf Baechle	jalr	t0
1321da177e4SLinus Torvalds
1331da177e4SLinus Torvalds	li	t0, -EMAXERRNO - 1	# error?
1341da177e4SLinus Torvalds	sltu	t0, t0, v0
1351da177e4SLinus Torvalds	sw	t0, PT_R7(sp)		# set error flag
1361da177e4SLinus Torvalds	beqz	t0, 1f
1371da177e4SLinus Torvalds
1388f5a00ebSAl Viro	lw	t1, PT_R2(sp)		# syscall number
1391da177e4SLinus Torvalds	negu	v0			# error
1408f5a00ebSAl Viro	sw	t1, PT_R0(sp)		# save it for syscall restarting
1411da177e4SLinus Torvalds1:	sw	v0, PT_R2(sp)		# result
1421da177e4SLinus Torvalds
143*9d37c405SMarkos Chandras2:	j	syscall_exit
1441da177e4SLinus Torvalds
1451da177e4SLinus Torvalds/* ------------------------------------------------------------------------ */
1461da177e4SLinus Torvalds
1471da177e4SLinus Torvalds	/*
1481da177e4SLinus Torvalds	 * The stackpointer for a call with more than 4 arguments is bad.
1491da177e4SLinus Torvalds	 * We probably should handle this case a bit more drastic.
1501da177e4SLinus Torvalds	 */
1511da177e4SLinus Torvaldsbad_stack:
1525b89c004SAl Viro	li	v0, EFAULT
1531da177e4SLinus Torvalds	sw	v0, PT_R2(sp)
1541da177e4SLinus Torvalds	li	t0, 1				# set error flag
1551da177e4SLinus Torvalds	sw	t0, PT_R7(sp)
1561da177e4SLinus Torvalds	j	o32_syscall_exit
1571da177e4SLinus Torvalds
1581da177e4SLinus Torvalds	/*
1591da177e4SLinus Torvalds	 * The system call does not exist in this kernel
1601da177e4SLinus Torvalds	 */
1611da177e4SLinus Torvaldsillegal_syscall:
162bda8229bSAtsushi Nemoto	li	v0, ENOSYS			# error
1631da177e4SLinus Torvalds	sw	v0, PT_R2(sp)
1641da177e4SLinus Torvalds	li	t0, 1				# set error flag
1651da177e4SLinus Torvalds	sw	t0, PT_R7(sp)
1661da177e4SLinus Torvalds	j	o32_syscall_exit
1671da177e4SLinus Torvalds	END(handle_sys)
1681da177e4SLinus Torvalds
1691da177e4SLinus Torvalds	LEAF(sys_syscall)
1701da177e4SLinus Torvalds	subu	t0, a0, __NR_O32_Linux	# check syscall number
1711da177e4SLinus Torvalds	sltiu	v0, t0, __NR_O32_Linux_syscalls + 1
172e807f957SVlad Malov	beqz	t0, einval		# do not recurse
17346e12c07SRalf Baechle	sll	t1, t0, 2
1741da177e4SLinus Torvalds	beqz	v0, einval
1751da177e4SLinus Torvalds	lw	t2, sys_call_table(t1)		# syscall routine
1761da177e4SLinus Torvalds
1771da177e4SLinus Torvalds	/* Some syscalls like execve get their arguments from struct pt_regs
1781da177e4SLinus Torvalds	   and claim zero arguments in the syscall table. Thus we have to
1791da177e4SLinus Torvalds	   assume the worst case and shuffle around all potential arguments.
1801da177e4SLinus Torvalds	   If you want performance, don't use indirect syscalls. */
1811da177e4SLinus Torvalds
1821da177e4SLinus Torvalds	move	a0, a1				# shift argument registers
1831da177e4SLinus Torvalds	move	a1, a2
1841da177e4SLinus Torvalds	move	a2, a3
1851da177e4SLinus Torvalds	lw	a3, 16(sp)
1861da177e4SLinus Torvalds	lw	t4, 20(sp)
1871da177e4SLinus Torvalds	lw	t5, 24(sp)
1881da177e4SLinus Torvalds	lw	t6, 28(sp)
1891da177e4SLinus Torvalds	sw	t4, 16(sp)
1901da177e4SLinus Torvalds	sw	t5, 20(sp)
1911da177e4SLinus Torvalds	sw	t6, 24(sp)
1921da177e4SLinus Torvalds	sw	a0, PT_R4(sp)			# .. and push back a0 - a3, some
1931da177e4SLinus Torvalds	sw	a1, PT_R5(sp)			# syscalls expect them there
1941da177e4SLinus Torvalds	sw	a2, PT_R6(sp)
1951da177e4SLinus Torvalds	sw	a3, PT_R7(sp)
1961da177e4SLinus Torvalds	sw	a3, PT_R26(sp)			# update a3 for syscall restarting
1971da177e4SLinus Torvalds	jr	t2
1981da177e4SLinus Torvalds	/* Unreached */
1991da177e4SLinus Torvalds
200fb498e25SAtsushi Nemotoeinval: li	v0, -ENOSYS
2011da177e4SLinus Torvalds	jr	ra
2021da177e4SLinus Torvalds	END(sys_syscall)
2031da177e4SLinus Torvalds
20446e12c07SRalf Baechle	.align	2
20546e12c07SRalf Baechle	.type	sys_call_table, @object
20646e12c07SRalf BaechleEXPORT(sys_call_table)
20746e12c07SRalf Baechle	PTR	sys_syscall			/* 4000 */
20846e12c07SRalf Baechle	PTR	sys_exit
20946e12c07SRalf Baechle	PTR	__sys_fork
21046e12c07SRalf Baechle	PTR	sys_read
21146e12c07SRalf Baechle	PTR	sys_write
21246e12c07SRalf Baechle	PTR	sys_open			/* 4005 */
21346e12c07SRalf Baechle	PTR	sys_close
21446e12c07SRalf Baechle	PTR	sys_waitpid
21546e12c07SRalf Baechle	PTR	sys_creat
21646e12c07SRalf Baechle	PTR	sys_link
21746e12c07SRalf Baechle	PTR	sys_unlink			/* 4010 */
21846e12c07SRalf Baechle	PTR	sys_execve
21946e12c07SRalf Baechle	PTR	sys_chdir
22046e12c07SRalf Baechle	PTR	sys_time
22146e12c07SRalf Baechle	PTR	sys_mknod
22246e12c07SRalf Baechle	PTR	sys_chmod			/* 4015 */
22346e12c07SRalf Baechle	PTR	sys_lchown
22446e12c07SRalf Baechle	PTR	sys_ni_syscall
22546e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was sys_stat */
22646e12c07SRalf Baechle	PTR	sys_lseek
22746e12c07SRalf Baechle	PTR	sys_getpid			/* 4020 */
22846e12c07SRalf Baechle	PTR	sys_mount
22946e12c07SRalf Baechle	PTR	sys_oldumount
23046e12c07SRalf Baechle	PTR	sys_setuid
23146e12c07SRalf Baechle	PTR	sys_getuid
23246e12c07SRalf Baechle	PTR	sys_stime			/* 4025 */
23346e12c07SRalf Baechle	PTR	sys_ptrace
23446e12c07SRalf Baechle	PTR	sys_alarm
23546e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was sys_fstat */
23646e12c07SRalf Baechle	PTR	sys_pause
23746e12c07SRalf Baechle	PTR	sys_utime			/* 4030 */
23846e12c07SRalf Baechle	PTR	sys_ni_syscall
23946e12c07SRalf Baechle	PTR	sys_ni_syscall
24046e12c07SRalf Baechle	PTR	sys_access
24146e12c07SRalf Baechle	PTR	sys_nice
24246e12c07SRalf Baechle	PTR	sys_ni_syscall			/* 4035 */
24346e12c07SRalf Baechle	PTR	sys_sync
24446e12c07SRalf Baechle	PTR	sys_kill
24546e12c07SRalf Baechle	PTR	sys_rename
24646e12c07SRalf Baechle	PTR	sys_mkdir
24746e12c07SRalf Baechle	PTR	sys_rmdir			/* 4040 */
24846e12c07SRalf Baechle	PTR	sys_dup
24946e12c07SRalf Baechle	PTR	sysm_pipe
25046e12c07SRalf Baechle	PTR	sys_times
25146e12c07SRalf Baechle	PTR	sys_ni_syscall
25246e12c07SRalf Baechle	PTR	sys_brk				/* 4045 */
25346e12c07SRalf Baechle	PTR	sys_setgid
25446e12c07SRalf Baechle	PTR	sys_getgid
25546e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was signal(2) */
25646e12c07SRalf Baechle	PTR	sys_geteuid
25746e12c07SRalf Baechle	PTR	sys_getegid			/* 4050 */
25846e12c07SRalf Baechle	PTR	sys_acct
25946e12c07SRalf Baechle	PTR	sys_umount
26046e12c07SRalf Baechle	PTR	sys_ni_syscall
26146e12c07SRalf Baechle	PTR	sys_ioctl
26246e12c07SRalf Baechle	PTR	sys_fcntl			/* 4055 */
26346e12c07SRalf Baechle	PTR	sys_ni_syscall
26446e12c07SRalf Baechle	PTR	sys_setpgid
26546e12c07SRalf Baechle	PTR	sys_ni_syscall
26646e12c07SRalf Baechle	PTR	sys_olduname
26746e12c07SRalf Baechle	PTR	sys_umask			/* 4060 */
26846e12c07SRalf Baechle	PTR	sys_chroot
26946e12c07SRalf Baechle	PTR	sys_ustat
27046e12c07SRalf Baechle	PTR	sys_dup2
27146e12c07SRalf Baechle	PTR	sys_getppid
27246e12c07SRalf Baechle	PTR	sys_getpgrp			/* 4065 */
27346e12c07SRalf Baechle	PTR	sys_setsid
27446e12c07SRalf Baechle	PTR	sys_sigaction
27546e12c07SRalf Baechle	PTR	sys_sgetmask
27646e12c07SRalf Baechle	PTR	sys_ssetmask
27746e12c07SRalf Baechle	PTR	sys_setreuid			/* 4070 */
27846e12c07SRalf Baechle	PTR	sys_setregid
27946e12c07SRalf Baechle	PTR	sys_sigsuspend
28046e12c07SRalf Baechle	PTR	sys_sigpending
28146e12c07SRalf Baechle	PTR	sys_sethostname
28246e12c07SRalf Baechle	PTR	sys_setrlimit			/* 4075 */
28346e12c07SRalf Baechle	PTR	sys_getrlimit
28446e12c07SRalf Baechle	PTR	sys_getrusage
28546e12c07SRalf Baechle	PTR	sys_gettimeofday
28646e12c07SRalf Baechle	PTR	sys_settimeofday
28746e12c07SRalf Baechle	PTR	sys_getgroups			/* 4080 */
28846e12c07SRalf Baechle	PTR	sys_setgroups
28946e12c07SRalf Baechle	PTR	sys_ni_syscall			/* old_select */
29046e12c07SRalf Baechle	PTR	sys_symlink
29146e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was sys_lstat */
29246e12c07SRalf Baechle	PTR	sys_readlink			/* 4085 */
29346e12c07SRalf Baechle	PTR	sys_uselib
29446e12c07SRalf Baechle	PTR	sys_swapon
29546e12c07SRalf Baechle	PTR	sys_reboot
29646e12c07SRalf Baechle	PTR	sys_old_readdir
29746e12c07SRalf Baechle	PTR	sys_mips_mmap			/* 4090 */
29846e12c07SRalf Baechle	PTR	sys_munmap
29946e12c07SRalf Baechle	PTR	sys_truncate
30046e12c07SRalf Baechle	PTR	sys_ftruncate
30146e12c07SRalf Baechle	PTR	sys_fchmod
30246e12c07SRalf Baechle	PTR	sys_fchown			/* 4095 */
30346e12c07SRalf Baechle	PTR	sys_getpriority
30446e12c07SRalf Baechle	PTR	sys_setpriority
30546e12c07SRalf Baechle	PTR	sys_ni_syscall
30646e12c07SRalf Baechle	PTR	sys_statfs
30746e12c07SRalf Baechle	PTR	sys_fstatfs			/* 4100 */
30846e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was ioperm(2) */
30946e12c07SRalf Baechle	PTR	sys_socketcall
31046e12c07SRalf Baechle	PTR	sys_syslog
31146e12c07SRalf Baechle	PTR	sys_setitimer
31246e12c07SRalf Baechle	PTR	sys_getitimer			/* 4105 */
31346e12c07SRalf Baechle	PTR	sys_newstat
31446e12c07SRalf Baechle	PTR	sys_newlstat
31546e12c07SRalf Baechle	PTR	sys_newfstat
31646e12c07SRalf Baechle	PTR	sys_uname
31746e12c07SRalf Baechle	PTR	sys_ni_syscall			/* 4110 was iopl(2) */
31846e12c07SRalf Baechle	PTR	sys_vhangup
31946e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was sys_idle() */
32046e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was sys_vm86 */
32146e12c07SRalf Baechle	PTR	sys_wait4
32246e12c07SRalf Baechle	PTR	sys_swapoff			/* 4115 */
32346e12c07SRalf Baechle	PTR	sys_sysinfo
32446e12c07SRalf Baechle	PTR	sys_ipc
32546e12c07SRalf Baechle	PTR	sys_fsync
32646e12c07SRalf Baechle	PTR	sys_sigreturn
32746e12c07SRalf Baechle	PTR	__sys_clone			/* 4120 */
32846e12c07SRalf Baechle	PTR	sys_setdomainname
32946e12c07SRalf Baechle	PTR	sys_newuname
33046e12c07SRalf Baechle	PTR	sys_ni_syscall			/* sys_modify_ldt */
33146e12c07SRalf Baechle	PTR	sys_adjtimex
33246e12c07SRalf Baechle	PTR	sys_mprotect			/* 4125 */
33346e12c07SRalf Baechle	PTR	sys_sigprocmask
33446e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was create_module */
33546e12c07SRalf Baechle	PTR	sys_init_module
33646e12c07SRalf Baechle	PTR	sys_delete_module
33746e12c07SRalf Baechle	PTR	sys_ni_syscall			/* 4130 was get_kernel_syms */
33846e12c07SRalf Baechle	PTR	sys_quotactl
33946e12c07SRalf Baechle	PTR	sys_getpgid
34046e12c07SRalf Baechle	PTR	sys_fchdir
34146e12c07SRalf Baechle	PTR	sys_bdflush
34246e12c07SRalf Baechle	PTR	sys_sysfs			/* 4135 */
34346e12c07SRalf Baechle	PTR	sys_personality
34446e12c07SRalf Baechle	PTR	sys_ni_syscall			/* for afs_syscall */
34546e12c07SRalf Baechle	PTR	sys_setfsuid
34646e12c07SRalf Baechle	PTR	sys_setfsgid
34746e12c07SRalf Baechle	PTR	sys_llseek			/* 4140 */
34846e12c07SRalf Baechle	PTR	sys_getdents
34946e12c07SRalf Baechle	PTR	sys_select
35046e12c07SRalf Baechle	PTR	sys_flock
35146e12c07SRalf Baechle	PTR	sys_msync
35246e12c07SRalf Baechle	PTR	sys_readv			/* 4145 */
35346e12c07SRalf Baechle	PTR	sys_writev
35446e12c07SRalf Baechle	PTR	sys_cacheflush
35546e12c07SRalf Baechle	PTR	sys_cachectl
35646e12c07SRalf Baechle	PTR	sys_sysmips
35746e12c07SRalf Baechle	PTR	sys_ni_syscall			/* 4150 */
35846e12c07SRalf Baechle	PTR	sys_getsid
35946e12c07SRalf Baechle	PTR	sys_fdatasync
36046e12c07SRalf Baechle	PTR	sys_sysctl
36146e12c07SRalf Baechle	PTR	sys_mlock
36246e12c07SRalf Baechle	PTR	sys_munlock			/* 4155 */
36346e12c07SRalf Baechle	PTR	sys_mlockall
36446e12c07SRalf Baechle	PTR	sys_munlockall
36546e12c07SRalf Baechle	PTR	sys_sched_setparam
36646e12c07SRalf Baechle	PTR	sys_sched_getparam
36746e12c07SRalf Baechle	PTR	sys_sched_setscheduler		/* 4160 */
36846e12c07SRalf Baechle	PTR	sys_sched_getscheduler
36946e12c07SRalf Baechle	PTR	sys_sched_yield
37046e12c07SRalf Baechle	PTR	sys_sched_get_priority_max
37146e12c07SRalf Baechle	PTR	sys_sched_get_priority_min
37246e12c07SRalf Baechle	PTR	sys_sched_rr_get_interval	/* 4165 */
37346e12c07SRalf Baechle	PTR	sys_nanosleep
37446e12c07SRalf Baechle	PTR	sys_mremap
37546e12c07SRalf Baechle	PTR	sys_accept
37646e12c07SRalf Baechle	PTR	sys_bind
37746e12c07SRalf Baechle	PTR	sys_connect			/* 4170 */
37846e12c07SRalf Baechle	PTR	sys_getpeername
37946e12c07SRalf Baechle	PTR	sys_getsockname
38046e12c07SRalf Baechle	PTR	sys_getsockopt
38146e12c07SRalf Baechle	PTR	sys_listen
38246e12c07SRalf Baechle	PTR	sys_recv			/* 4175 */
38346e12c07SRalf Baechle	PTR	sys_recvfrom
38446e12c07SRalf Baechle	PTR	sys_recvmsg
38546e12c07SRalf Baechle	PTR	sys_send
38646e12c07SRalf Baechle	PTR	sys_sendmsg
38746e12c07SRalf Baechle	PTR	sys_sendto			/* 4180 */
38846e12c07SRalf Baechle	PTR	sys_setsockopt
38946e12c07SRalf Baechle	PTR	sys_shutdown
39046e12c07SRalf Baechle	PTR	sys_socket
39146e12c07SRalf Baechle	PTR	sys_socketpair
39246e12c07SRalf Baechle	PTR	sys_setresuid			/* 4185 */
39346e12c07SRalf Baechle	PTR	sys_getresuid
39446e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was sys_query_module */
39546e12c07SRalf Baechle	PTR	sys_poll
39646e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was nfsservctl */
39746e12c07SRalf Baechle	PTR	sys_setresgid			/* 4190 */
39846e12c07SRalf Baechle	PTR	sys_getresgid
39946e12c07SRalf Baechle	PTR	sys_prctl
40046e12c07SRalf Baechle	PTR	sys_rt_sigreturn
40146e12c07SRalf Baechle	PTR	sys_rt_sigaction
40246e12c07SRalf Baechle	PTR	sys_rt_sigprocmask		/* 4195 */
40346e12c07SRalf Baechle	PTR	sys_rt_sigpending
40446e12c07SRalf Baechle	PTR	sys_rt_sigtimedwait
40546e12c07SRalf Baechle	PTR	sys_rt_sigqueueinfo
40646e12c07SRalf Baechle	PTR	sys_rt_sigsuspend
40746e12c07SRalf Baechle	PTR	sys_pread64			/* 4200 */
40846e12c07SRalf Baechle	PTR	sys_pwrite64
40946e12c07SRalf Baechle	PTR	sys_chown
41046e12c07SRalf Baechle	PTR	sys_getcwd
41146e12c07SRalf Baechle	PTR	sys_capget
41246e12c07SRalf Baechle	PTR	sys_capset			/* 4205 */
41346e12c07SRalf Baechle	PTR	sys_sigaltstack
41446e12c07SRalf Baechle	PTR	sys_sendfile
41546e12c07SRalf Baechle	PTR	sys_ni_syscall
41646e12c07SRalf Baechle	PTR	sys_ni_syscall
41746e12c07SRalf Baechle	PTR	sys_mips_mmap2			/* 4210 */
41846e12c07SRalf Baechle	PTR	sys_truncate64
41946e12c07SRalf Baechle	PTR	sys_ftruncate64
42046e12c07SRalf Baechle	PTR	sys_stat64
42146e12c07SRalf Baechle	PTR	sys_lstat64
42246e12c07SRalf Baechle	PTR	sys_fstat64			/* 4215 */
42346e12c07SRalf Baechle	PTR	sys_pivot_root
42446e12c07SRalf Baechle	PTR	sys_mincore
42546e12c07SRalf Baechle	PTR	sys_madvise
42646e12c07SRalf Baechle	PTR	sys_getdents64
42746e12c07SRalf Baechle	PTR	sys_fcntl64			/* 4220 */
42846e12c07SRalf Baechle	PTR	sys_ni_syscall
42946e12c07SRalf Baechle	PTR	sys_gettid
43046e12c07SRalf Baechle	PTR	sys_readahead
43146e12c07SRalf Baechle	PTR	sys_setxattr
43246e12c07SRalf Baechle	PTR	sys_lsetxattr			/* 4225 */
43346e12c07SRalf Baechle	PTR	sys_fsetxattr
43446e12c07SRalf Baechle	PTR	sys_getxattr
43546e12c07SRalf Baechle	PTR	sys_lgetxattr
43646e12c07SRalf Baechle	PTR	sys_fgetxattr
43746e12c07SRalf Baechle	PTR	sys_listxattr			/* 4230 */
43846e12c07SRalf Baechle	PTR	sys_llistxattr
43946e12c07SRalf Baechle	PTR	sys_flistxattr
44046e12c07SRalf Baechle	PTR	sys_removexattr
44146e12c07SRalf Baechle	PTR	sys_lremovexattr
44246e12c07SRalf Baechle	PTR	sys_fremovexattr		/* 4235 */
44346e12c07SRalf Baechle	PTR	sys_tkill
44446e12c07SRalf Baechle	PTR	sys_sendfile64
44546e12c07SRalf Baechle	PTR	sys_futex
446f088fc84SRalf Baechle#ifdef CONFIG_MIPS_MT_FPAFF
447f088fc84SRalf Baechle	/*
448f088fc84SRalf Baechle	 * For FPU affinity scheduling on MIPS MT processors, we need to
449f088fc84SRalf Baechle	 * intercept sys_sched_xxxaffinity() calls until we get a proper hook
4500a0fca9dSViresh Kumar	 * in kernel/sched/core.c.  Considered only temporary we only support
4510a0fca9dSViresh Kumar	 * these hooks for the 32-bit kernel - there is no MIPS64 MT processor
4520a0fca9dSViresh Kumar	 * atm.
453f088fc84SRalf Baechle	 */
45446e12c07SRalf Baechle	PTR	mipsmt_sys_sched_setaffinity
45546e12c07SRalf Baechle	PTR	mipsmt_sys_sched_getaffinity
456f088fc84SRalf Baechle#else
45746e12c07SRalf Baechle	PTR	sys_sched_setaffinity
45846e12c07SRalf Baechle	PTR	sys_sched_getaffinity		/* 4240 */
459f088fc84SRalf Baechle#endif /* CONFIG_MIPS_MT_FPAFF */
46046e12c07SRalf Baechle	PTR	sys_io_setup
46146e12c07SRalf Baechle	PTR	sys_io_destroy
46246e12c07SRalf Baechle	PTR	sys_io_getevents
46346e12c07SRalf Baechle	PTR	sys_io_submit
46446e12c07SRalf Baechle	PTR	sys_io_cancel			/* 4245 */
46546e12c07SRalf Baechle	PTR	sys_exit_group
46646e12c07SRalf Baechle	PTR	sys_lookup_dcookie
46746e12c07SRalf Baechle	PTR	sys_epoll_create
46846e12c07SRalf Baechle	PTR	sys_epoll_ctl
46946e12c07SRalf Baechle	PTR	sys_epoll_wait			/* 4250 */
47046e12c07SRalf Baechle	PTR	sys_remap_file_pages
47146e12c07SRalf Baechle	PTR	sys_set_tid_address
47246e12c07SRalf Baechle	PTR	sys_restart_syscall
47346e12c07SRalf Baechle	PTR	sys_fadvise64_64
47446e12c07SRalf Baechle	PTR	sys_statfs64			/* 4255 */
47546e12c07SRalf Baechle	PTR	sys_fstatfs64
47646e12c07SRalf Baechle	PTR	sys_timer_create
47746e12c07SRalf Baechle	PTR	sys_timer_settime
47846e12c07SRalf Baechle	PTR	sys_timer_gettime
47946e12c07SRalf Baechle	PTR	sys_timer_getoverrun		/* 4260 */
48046e12c07SRalf Baechle	PTR	sys_timer_delete
48146e12c07SRalf Baechle	PTR	sys_clock_settime
48246e12c07SRalf Baechle	PTR	sys_clock_gettime
48346e12c07SRalf Baechle	PTR	sys_clock_getres
48446e12c07SRalf Baechle	PTR	sys_clock_nanosleep		/* 4265 */
48546e12c07SRalf Baechle	PTR	sys_tgkill
48646e12c07SRalf Baechle	PTR	sys_utimes
48746e12c07SRalf Baechle	PTR	sys_mbind
48846e12c07SRalf Baechle	PTR	sys_ni_syscall			/* sys_get_mempolicy */
48946e12c07SRalf Baechle	PTR	sys_ni_syscall			/* 4270 sys_set_mempolicy */
49046e12c07SRalf Baechle	PTR	sys_mq_open
49146e12c07SRalf Baechle	PTR	sys_mq_unlink
49246e12c07SRalf Baechle	PTR	sys_mq_timedsend
49346e12c07SRalf Baechle	PTR	sys_mq_timedreceive
49446e12c07SRalf Baechle	PTR	sys_mq_notify			/* 4275 */
49546e12c07SRalf Baechle	PTR	sys_mq_getsetattr
49646e12c07SRalf Baechle	PTR	sys_ni_syscall			/* sys_vserver */
49746e12c07SRalf Baechle	PTR	sys_waitid
49846e12c07SRalf Baechle	PTR	sys_ni_syscall			/* available, was setaltroot */
49946e12c07SRalf Baechle	PTR	sys_add_key			/* 4280 */
50046e12c07SRalf Baechle	PTR	sys_request_key
50146e12c07SRalf Baechle	PTR	sys_keyctl
50246e12c07SRalf Baechle	PTR	sys_set_thread_area
50346e12c07SRalf Baechle	PTR	sys_inotify_init
50446e12c07SRalf Baechle	PTR	sys_inotify_add_watch		/* 4285 */
50546e12c07SRalf Baechle	PTR	sys_inotify_rm_watch
50646e12c07SRalf Baechle	PTR	sys_migrate_pages
50746e12c07SRalf Baechle	PTR	sys_openat
50846e12c07SRalf Baechle	PTR	sys_mkdirat
50946e12c07SRalf Baechle	PTR	sys_mknodat			/* 4290 */
51046e12c07SRalf Baechle	PTR	sys_fchownat
51146e12c07SRalf Baechle	PTR	sys_futimesat
51246e12c07SRalf Baechle	PTR	sys_fstatat64
51346e12c07SRalf Baechle	PTR	sys_unlinkat
51446e12c07SRalf Baechle	PTR	sys_renameat			/* 4295 */
51546e12c07SRalf Baechle	PTR	sys_linkat
51646e12c07SRalf Baechle	PTR	sys_symlinkat
51746e12c07SRalf Baechle	PTR	sys_readlinkat
51846e12c07SRalf Baechle	PTR	sys_fchmodat
51946e12c07SRalf Baechle	PTR	sys_faccessat			/* 4300 */
52046e12c07SRalf Baechle	PTR	sys_pselect6
52146e12c07SRalf Baechle	PTR	sys_ppoll
52246e12c07SRalf Baechle	PTR	sys_unshare
52346e12c07SRalf Baechle	PTR	sys_splice
52446e12c07SRalf Baechle	PTR	sys_sync_file_range		/* 4305 */
52546e12c07SRalf Baechle	PTR	sys_tee
52646e12c07SRalf Baechle	PTR	sys_vmsplice
52746e12c07SRalf Baechle	PTR	sys_move_pages
52846e12c07SRalf Baechle	PTR	sys_set_robust_list
52946e12c07SRalf Baechle	PTR	sys_get_robust_list		/* 4310 */
53046e12c07SRalf Baechle	PTR	sys_kexec_load
53146e12c07SRalf Baechle	PTR	sys_getcpu
53246e12c07SRalf Baechle	PTR	sys_epoll_pwait
53346e12c07SRalf Baechle	PTR	sys_ioprio_set
53446e12c07SRalf Baechle	PTR	sys_ioprio_get			/* 4315 */
53546e12c07SRalf Baechle	PTR	sys_utimensat
53646e12c07SRalf Baechle	PTR	sys_signalfd
53746e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was timerfd */
53846e12c07SRalf Baechle	PTR	sys_eventfd
53946e12c07SRalf Baechle	PTR	sys_fallocate			/* 4320 */
54046e12c07SRalf Baechle	PTR	sys_timerfd_create
54146e12c07SRalf Baechle	PTR	sys_timerfd_gettime
54246e12c07SRalf Baechle	PTR	sys_timerfd_settime
54346e12c07SRalf Baechle	PTR	sys_signalfd4
54446e12c07SRalf Baechle	PTR	sys_eventfd2			/* 4325 */
54546e12c07SRalf Baechle	PTR	sys_epoll_create1
54646e12c07SRalf Baechle	PTR	sys_dup3
54746e12c07SRalf Baechle	PTR	sys_pipe2
54846e12c07SRalf Baechle	PTR	sys_inotify_init1
54946e12c07SRalf Baechle	PTR	sys_preadv			/* 4330 */
55046e12c07SRalf Baechle	PTR	sys_pwritev
55146e12c07SRalf Baechle	PTR	sys_rt_tgsigqueueinfo
55246e12c07SRalf Baechle	PTR	sys_perf_event_open
55346e12c07SRalf Baechle	PTR	sys_accept4
55446e12c07SRalf Baechle	PTR	sys_recvmmsg			/* 4335 */
55546e12c07SRalf Baechle	PTR	sys_fanotify_init
55646e12c07SRalf Baechle	PTR	sys_fanotify_mark
55746e12c07SRalf Baechle	PTR	sys_prlimit64
55846e12c07SRalf Baechle	PTR	sys_name_to_handle_at
55946e12c07SRalf Baechle	PTR	sys_open_by_handle_at		/* 4340 */
56046e12c07SRalf Baechle	PTR	sys_clock_adjtime
56146e12c07SRalf Baechle	PTR	sys_syncfs
56246e12c07SRalf Baechle	PTR	sys_sendmmsg
56346e12c07SRalf Baechle	PTR	sys_setns
56446e12c07SRalf Baechle	PTR	sys_process_vm_readv		/* 4345 */
56546e12c07SRalf Baechle	PTR	sys_process_vm_writev
56646e12c07SRalf Baechle	PTR	sys_kcmp
56746e12c07SRalf Baechle	PTR	sys_finit_module
5686776254bSJames Hogan	PTR	sys_sched_setattr
5696776254bSJames Hogan	PTR	sys_sched_getattr		/* 4350 */
570