xref: /openbmc/linux/arch/mips/kernel/scall32-o32.S (revision be856439c998854c009b1f2ef9084a39b1295cec)
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
986bdb277SMarkos Chandras * Copyright (C) 2014 Imagination Technologies Ltd.
101da177e4SLinus Torvalds */
111da177e4SLinus Torvalds#include <linux/errno.h>
121da177e4SLinus Torvalds#include <asm/asm.h>
131da177e4SLinus Torvalds#include <asm/asmmacro.h>
14192ef366SRalf Baechle#include <asm/irqflags.h>
151da177e4SLinus Torvalds#include <asm/mipsregs.h>
161da177e4SLinus Torvalds#include <asm/regdef.h>
171da177e4SLinus Torvalds#include <asm/stackframe.h>
181da177e4SLinus Torvalds#include <asm/isadep.h>
191da177e4SLinus Torvalds#include <asm/sysmips.h>
201da177e4SLinus Torvalds#include <asm/thread_info.h>
211da177e4SLinus Torvalds#include <asm/unistd.h>
221da177e4SLinus Torvalds#include <asm/war.h>
23048eb582SSam Ravnborg#include <asm/asm-offsets.h>
241da177e4SLinus Torvalds
251da177e4SLinus Torvalds	.align	5
261da177e4SLinus TorvaldsNESTED(handle_sys, PT_SIZE, sp)
271da177e4SLinus Torvalds	.set	noat
281da177e4SLinus Torvalds	SAVE_SOME
29eae6c0daSAtsushi Nemoto	TRACE_IRQS_ON_RELOAD
301da177e4SLinus Torvalds	STI
311da177e4SLinus Torvalds	.set	at
321da177e4SLinus Torvalds
331da177e4SLinus Torvalds	lw	t1, PT_EPC(sp)		# skip syscall on return
341da177e4SLinus Torvalds
351da177e4SLinus Torvalds	addiu	t1, 4			# skip to next instruction
361da177e4SLinus Torvalds	sw	t1, PT_EPC(sp)
371da177e4SLinus Torvalds
381da177e4SLinus Torvalds	sw	a3, PT_R26(sp)		# save a3 for syscall restarting
391da177e4SLinus Torvalds
4046e12c07SRalf Baechle	/*
4146e12c07SRalf Baechle	 * More than four arguments.  Try to deal with it by copying the
4246e12c07SRalf Baechle	 * stack arguments from the user stack to the kernel stack.
4346e12c07SRalf Baechle	 * This Sucks (TM).
4446e12c07SRalf Baechle	 */
4546e12c07SRalf Baechle	lw	t0, PT_R29(sp)		# get old user stack pointer
4646e12c07SRalf Baechle
4746e12c07SRalf Baechle	/*
4846e12c07SRalf Baechle	 * We intentionally keep the kernel stack a little below the top of
4946e12c07SRalf Baechle	 * userspace so we don't have to do a slower byte accurate check here.
5046e12c07SRalf Baechle	 */
5146e12c07SRalf Baechle	lw	t5, TI_ADDR_LIMIT($28)
5246e12c07SRalf Baechle	addu	t4, t0, 32
5346e12c07SRalf Baechle	and	t5, t4
5446e12c07SRalf Baechle	bltz	t5, bad_stack		# -> sp is bad
5546e12c07SRalf Baechle
5646e12c07SRalf Baechle	/*
5746e12c07SRalf Baechle	 * Ok, copy the args from the luser stack to the kernel stack.
5846e12c07SRalf Baechle	 */
5946e12c07SRalf Baechle
6046e12c07SRalf Baechle	.set    push
6146e12c07SRalf Baechle	.set    noreorder
6246e12c07SRalf Baechle	.set	nomacro
6346e12c07SRalf Baechle
647928eb03SRalf Baechleload_a4: user_lw(t5, 16(t0))		# argument #5 from usp
657928eb03SRalf Baechleload_a5: user_lw(t6, 20(t0))		# argument #6 from usp
667928eb03SRalf Baechleload_a6: user_lw(t7, 24(t0))		# argument #7 from usp
677928eb03SRalf Baechleload_a7: user_lw(t8, 28(t0))		# argument #8 from usp
687928eb03SRalf Baechleloads_done:
6946e12c07SRalf Baechle
7046e12c07SRalf Baechle	sw	t5, 16(sp)		# argument #5 to ksp
7146e12c07SRalf Baechle	sw	t6, 20(sp)		# argument #6 to ksp
7246e12c07SRalf Baechle	sw	t7, 24(sp)		# argument #7 to ksp
7346e12c07SRalf Baechle	sw	t8, 28(sp)		# argument #8 to ksp
7446e12c07SRalf Baechle	.set	pop
7546e12c07SRalf Baechle
7646e12c07SRalf Baechle	.section __ex_table,"a"
777928eb03SRalf Baechle	PTR	load_a4, bad_stack_a4
787928eb03SRalf Baechle	PTR	load_a5, bad_stack_a5
797928eb03SRalf Baechle	PTR	load_a6, bad_stack_a6
807928eb03SRalf Baechle	PTR	load_a7, bad_stack_a7
8146e12c07SRalf Baechle	.previous
8246e12c07SRalf Baechle
831da177e4SLinus Torvalds	lw	t0, TI_FLAGS($28)	# syscall tracing enabled?
84e7f3b48aSRalf Baechle	li	t1, _TIF_WORK_SYSCALL_ENTRY
851da177e4SLinus Torvalds	and	t0, t1
861da177e4SLinus Torvalds	bnez	t0, syscall_trace_entry # -> yes
87d218af78SMarkos Chandrassyscall_common:
88a400bed6SMatt Redfearn	subu	v0, v0, __NR_O32_Linux	# check syscall number
89*be856439SFiroz Khan	sltiu	t0, v0, __NR_O32_Linux_syscalls
90d218af78SMarkos Chandras	beqz	t0, illegal_syscall
91d218af78SMarkos Chandras
92d218af78SMarkos Chandras	sll	t0, v0, 2
93d218af78SMarkos Chandras	la	t1, sys_call_table
94d218af78SMarkos Chandras	addu	t1, t0
95d218af78SMarkos Chandras	lw	t2, (t1)		# syscall routine
96d218af78SMarkos Chandras
97d218af78SMarkos Chandras	beqz	t2, illegal_syscall
981da177e4SLinus Torvalds
991da177e4SLinus Torvalds	jalr	t2			# Do The Real Thing (TM)
1001da177e4SLinus Torvalds
1011da177e4SLinus Torvalds	li	t0, -EMAXERRNO - 1	# error?
1021da177e4SLinus Torvalds	sltu	t0, t0, v0
1031da177e4SLinus Torvalds	sw	t0, PT_R7(sp)		# set error flag
1041da177e4SLinus Torvalds	beqz	t0, 1f
1051da177e4SLinus Torvalds
1068f5a00ebSAl Viro	lw	t1, PT_R2(sp)		# syscall number
1071da177e4SLinus Torvalds	negu	v0			# error
1088f5a00ebSAl Viro	sw	t1, PT_R0(sp)		# save it for syscall restarting
1091da177e4SLinus Torvalds1:	sw	v0, PT_R2(sp)		# result
1101da177e4SLinus Torvalds
1111da177e4SLinus Torvaldso32_syscall_exit:
11202f884edSAl Viro	j	syscall_exit_partial
1131da177e4SLinus Torvalds
1141da177e4SLinus Torvalds/* ------------------------------------------------------------------------ */
1151da177e4SLinus Torvalds
1161da177e4SLinus Torvaldssyscall_trace_entry:
1171da177e4SLinus Torvalds	SAVE_STATIC
1181da177e4SLinus Torvalds	move	a0, sp
1194c21b8fdSMarkos Chandras
1204c21b8fdSMarkos Chandras	/*
1214c21b8fdSMarkos Chandras	 * syscall number is in v0 unless we called syscall(__NR_###)
1224c21b8fdSMarkos Chandras	 * where the real syscall number is in a0
1234c21b8fdSMarkos Chandras	 */
124a400bed6SMatt Redfearn	move	a1, v0
125a400bed6SMatt Redfearn	subu	t2, v0,  __NR_O32_Linux
126a400bed6SMatt Redfearn	bnez	t2, 1f /* __NR_syscall at offset 0 */
1274c21b8fdSMarkos Chandras	lw	a1, PT_R4(sp)
1284c21b8fdSMarkos Chandras
1294c21b8fdSMarkos Chandras1:	jal	syscall_trace_enter
1301da177e4SLinus Torvalds
131d218af78SMarkos Chandras	bltz	v0, 1f			# seccomp failed? Skip syscall
1329d37c405SMarkos Chandras
13304a7052cSRalf Baechle	RESTORE_STATIC
134a400bed6SMatt Redfearn	lw	v0, PT_R2(sp)		# Restore syscall (maybe modified)
1351da177e4SLinus Torvalds	lw	a0, PT_R4(sp)		# Restore argument registers
1361da177e4SLinus Torvalds	lw	a1, PT_R5(sp)
1371da177e4SLinus Torvalds	lw	a2, PT_R6(sp)
1381da177e4SLinus Torvalds	lw	a3, PT_R7(sp)
139d218af78SMarkos Chandras	j	syscall_common
1401da177e4SLinus Torvalds
141d218af78SMarkos Chandras1:	j	syscall_exit
1421da177e4SLinus Torvalds
1431da177e4SLinus Torvalds/* ------------------------------------------------------------------------ */
1441da177e4SLinus Torvalds
1451da177e4SLinus Torvalds	/*
1467928eb03SRalf Baechle	 * Our open-coded access area sanity test for the stack pointer
1477928eb03SRalf Baechle	 * failed. We probably should handle this case a bit more drastic.
1481da177e4SLinus Torvalds	 */
1491da177e4SLinus Torvaldsbad_stack:
1505b89c004SAl Viro	li	v0, EFAULT
1511da177e4SLinus Torvalds	sw	v0, PT_R2(sp)
1521da177e4SLinus Torvalds	li	t0, 1				# set error flag
1531da177e4SLinus Torvalds	sw	t0, PT_R7(sp)
1541da177e4SLinus Torvalds	j	o32_syscall_exit
1551da177e4SLinus Torvalds
1567928eb03SRalf Baechlebad_stack_a4:
1577928eb03SRalf Baechle	li	t5, 0
1587928eb03SRalf Baechle	b	load_a5
1597928eb03SRalf Baechle
1607928eb03SRalf Baechlebad_stack_a5:
1617928eb03SRalf Baechle	li	t6, 0
1627928eb03SRalf Baechle	b	load_a6
1637928eb03SRalf Baechle
1647928eb03SRalf Baechlebad_stack_a6:
1657928eb03SRalf Baechle	li	t7, 0
1667928eb03SRalf Baechle	b	load_a7
1677928eb03SRalf Baechle
1687928eb03SRalf Baechlebad_stack_a7:
1697928eb03SRalf Baechle	li	t8, 0
1707928eb03SRalf Baechle	b	loads_done
1717928eb03SRalf Baechle
1721da177e4SLinus Torvalds	/*
1731da177e4SLinus Torvalds	 * The system call does not exist in this kernel
1741da177e4SLinus Torvalds	 */
1751da177e4SLinus Torvaldsillegal_syscall:
176bda8229bSAtsushi Nemoto	li	v0, ENOSYS			# error
1771da177e4SLinus Torvalds	sw	v0, PT_R2(sp)
1781da177e4SLinus Torvalds	li	t0, 1				# set error flag
1791da177e4SLinus Torvalds	sw	t0, PT_R7(sp)
1801da177e4SLinus Torvalds	j	o32_syscall_exit
1811da177e4SLinus Torvalds	END(handle_sys)
1821da177e4SLinus Torvalds
1831da177e4SLinus Torvalds	LEAF(sys_syscall)
1841da177e4SLinus Torvalds	subu	t0, a0, __NR_O32_Linux	# check syscall number
185*be856439SFiroz Khan	sltiu	v0, t0, __NR_O32_Linux_syscalls
186e807f957SVlad Malov	beqz	t0, einval		# do not recurse
18746e12c07SRalf Baechle	sll	t1, t0, 2
1881da177e4SLinus Torvalds	beqz	v0, einval
1891da177e4SLinus Torvalds	lw	t2, sys_call_table(t1)		# syscall routine
1901da177e4SLinus Torvalds
1911da177e4SLinus Torvalds	move	a0, a1				# shift argument registers
1921da177e4SLinus Torvalds	move	a1, a2
1931da177e4SLinus Torvalds	move	a2, a3
1941da177e4SLinus Torvalds	lw	a3, 16(sp)
1951da177e4SLinus Torvalds	lw	t4, 20(sp)
1961da177e4SLinus Torvalds	lw	t5, 24(sp)
1971da177e4SLinus Torvalds	lw	t6, 28(sp)
1981da177e4SLinus Torvalds	sw	t4, 16(sp)
1991da177e4SLinus Torvalds	sw	t5, 20(sp)
2001da177e4SLinus Torvalds	sw	t6, 24(sp)
2011da177e4SLinus Torvalds	jr	t2
2021da177e4SLinus Torvalds	/* Unreached */
2031da177e4SLinus Torvalds
204fb498e25SAtsushi Nemotoeinval: li	v0, -ENOSYS
2051da177e4SLinus Torvalds	jr	ra
2061da177e4SLinus Torvalds	END(sys_syscall)
2071da177e4SLinus Torvalds
20846e12c07SRalf Baechle	.align	2
20946e12c07SRalf Baechle	.type	sys_call_table, @object
21046e12c07SRalf BaechleEXPORT(sys_call_table)
21146e12c07SRalf Baechle	PTR	sys_syscall			/* 4000 */
21246e12c07SRalf Baechle	PTR	sys_exit
21346e12c07SRalf Baechle	PTR	__sys_fork
21446e12c07SRalf Baechle	PTR	sys_read
21546e12c07SRalf Baechle	PTR	sys_write
21646e12c07SRalf Baechle	PTR	sys_open			/* 4005 */
21746e12c07SRalf Baechle	PTR	sys_close
21846e12c07SRalf Baechle	PTR	sys_waitpid
21946e12c07SRalf Baechle	PTR	sys_creat
22046e12c07SRalf Baechle	PTR	sys_link
22146e12c07SRalf Baechle	PTR	sys_unlink			/* 4010 */
22246e12c07SRalf Baechle	PTR	sys_execve
22346e12c07SRalf Baechle	PTR	sys_chdir
22446e12c07SRalf Baechle	PTR	sys_time
22546e12c07SRalf Baechle	PTR	sys_mknod
22646e12c07SRalf Baechle	PTR	sys_chmod			/* 4015 */
22746e12c07SRalf Baechle	PTR	sys_lchown
22846e12c07SRalf Baechle	PTR	sys_ni_syscall
22946e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was sys_stat */
23046e12c07SRalf Baechle	PTR	sys_lseek
23146e12c07SRalf Baechle	PTR	sys_getpid			/* 4020 */
23246e12c07SRalf Baechle	PTR	sys_mount
23346e12c07SRalf Baechle	PTR	sys_oldumount
23446e12c07SRalf Baechle	PTR	sys_setuid
23546e12c07SRalf Baechle	PTR	sys_getuid
23646e12c07SRalf Baechle	PTR	sys_stime			/* 4025 */
23746e12c07SRalf Baechle	PTR	sys_ptrace
23846e12c07SRalf Baechle	PTR	sys_alarm
23946e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was sys_fstat */
24046e12c07SRalf Baechle	PTR	sys_pause
24146e12c07SRalf Baechle	PTR	sys_utime			/* 4030 */
24246e12c07SRalf Baechle	PTR	sys_ni_syscall
24346e12c07SRalf Baechle	PTR	sys_ni_syscall
24446e12c07SRalf Baechle	PTR	sys_access
24546e12c07SRalf Baechle	PTR	sys_nice
24646e12c07SRalf Baechle	PTR	sys_ni_syscall			/* 4035 */
24746e12c07SRalf Baechle	PTR	sys_sync
24846e12c07SRalf Baechle	PTR	sys_kill
24946e12c07SRalf Baechle	PTR	sys_rename
25046e12c07SRalf Baechle	PTR	sys_mkdir
25146e12c07SRalf Baechle	PTR	sys_rmdir			/* 4040 */
25246e12c07SRalf Baechle	PTR	sys_dup
25346e12c07SRalf Baechle	PTR	sysm_pipe
25446e12c07SRalf Baechle	PTR	sys_times
25546e12c07SRalf Baechle	PTR	sys_ni_syscall
25646e12c07SRalf Baechle	PTR	sys_brk				/* 4045 */
25746e12c07SRalf Baechle	PTR	sys_setgid
25846e12c07SRalf Baechle	PTR	sys_getgid
25946e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was signal(2) */
26046e12c07SRalf Baechle	PTR	sys_geteuid
26146e12c07SRalf Baechle	PTR	sys_getegid			/* 4050 */
26246e12c07SRalf Baechle	PTR	sys_acct
26346e12c07SRalf Baechle	PTR	sys_umount
26446e12c07SRalf Baechle	PTR	sys_ni_syscall
26546e12c07SRalf Baechle	PTR	sys_ioctl
26646e12c07SRalf Baechle	PTR	sys_fcntl			/* 4055 */
26746e12c07SRalf Baechle	PTR	sys_ni_syscall
26846e12c07SRalf Baechle	PTR	sys_setpgid
26946e12c07SRalf Baechle	PTR	sys_ni_syscall
27046e12c07SRalf Baechle	PTR	sys_olduname
27146e12c07SRalf Baechle	PTR	sys_umask			/* 4060 */
27246e12c07SRalf Baechle	PTR	sys_chroot
27346e12c07SRalf Baechle	PTR	sys_ustat
27446e12c07SRalf Baechle	PTR	sys_dup2
27546e12c07SRalf Baechle	PTR	sys_getppid
27646e12c07SRalf Baechle	PTR	sys_getpgrp			/* 4065 */
27746e12c07SRalf Baechle	PTR	sys_setsid
27846e12c07SRalf Baechle	PTR	sys_sigaction
27946e12c07SRalf Baechle	PTR	sys_sgetmask
28046e12c07SRalf Baechle	PTR	sys_ssetmask
28146e12c07SRalf Baechle	PTR	sys_setreuid			/* 4070 */
28246e12c07SRalf Baechle	PTR	sys_setregid
28346e12c07SRalf Baechle	PTR	sys_sigsuspend
28446e12c07SRalf Baechle	PTR	sys_sigpending
28546e12c07SRalf Baechle	PTR	sys_sethostname
28646e12c07SRalf Baechle	PTR	sys_setrlimit			/* 4075 */
28746e12c07SRalf Baechle	PTR	sys_getrlimit
28846e12c07SRalf Baechle	PTR	sys_getrusage
28946e12c07SRalf Baechle	PTR	sys_gettimeofday
29046e12c07SRalf Baechle	PTR	sys_settimeofday
29146e12c07SRalf Baechle	PTR	sys_getgroups			/* 4080 */
29246e12c07SRalf Baechle	PTR	sys_setgroups
29346e12c07SRalf Baechle	PTR	sys_ni_syscall			/* old_select */
29446e12c07SRalf Baechle	PTR	sys_symlink
29546e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was sys_lstat */
29646e12c07SRalf Baechle	PTR	sys_readlink			/* 4085 */
29746e12c07SRalf Baechle	PTR	sys_uselib
29846e12c07SRalf Baechle	PTR	sys_swapon
29946e12c07SRalf Baechle	PTR	sys_reboot
30046e12c07SRalf Baechle	PTR	sys_old_readdir
30146e12c07SRalf Baechle	PTR	sys_mips_mmap			/* 4090 */
30246e12c07SRalf Baechle	PTR	sys_munmap
30346e12c07SRalf Baechle	PTR	sys_truncate
30446e12c07SRalf Baechle	PTR	sys_ftruncate
30546e12c07SRalf Baechle	PTR	sys_fchmod
30646e12c07SRalf Baechle	PTR	sys_fchown			/* 4095 */
30746e12c07SRalf Baechle	PTR	sys_getpriority
30846e12c07SRalf Baechle	PTR	sys_setpriority
30946e12c07SRalf Baechle	PTR	sys_ni_syscall
31046e12c07SRalf Baechle	PTR	sys_statfs
31146e12c07SRalf Baechle	PTR	sys_fstatfs			/* 4100 */
31246e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was ioperm(2) */
31346e12c07SRalf Baechle	PTR	sys_socketcall
31446e12c07SRalf Baechle	PTR	sys_syslog
31546e12c07SRalf Baechle	PTR	sys_setitimer
31646e12c07SRalf Baechle	PTR	sys_getitimer			/* 4105 */
31746e12c07SRalf Baechle	PTR	sys_newstat
31846e12c07SRalf Baechle	PTR	sys_newlstat
31946e12c07SRalf Baechle	PTR	sys_newfstat
32046e12c07SRalf Baechle	PTR	sys_uname
32146e12c07SRalf Baechle	PTR	sys_ni_syscall			/* 4110 was iopl(2) */
32246e12c07SRalf Baechle	PTR	sys_vhangup
32346e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was sys_idle() */
32446e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was sys_vm86 */
32546e12c07SRalf Baechle	PTR	sys_wait4
32646e12c07SRalf Baechle	PTR	sys_swapoff			/* 4115 */
32746e12c07SRalf Baechle	PTR	sys_sysinfo
32846e12c07SRalf Baechle	PTR	sys_ipc
32946e12c07SRalf Baechle	PTR	sys_fsync
33046e12c07SRalf Baechle	PTR	sys_sigreturn
33146e12c07SRalf Baechle	PTR	__sys_clone			/* 4120 */
33246e12c07SRalf Baechle	PTR	sys_setdomainname
33346e12c07SRalf Baechle	PTR	sys_newuname
33446e12c07SRalf Baechle	PTR	sys_ni_syscall			/* sys_modify_ldt */
33546e12c07SRalf Baechle	PTR	sys_adjtimex
33646e12c07SRalf Baechle	PTR	sys_mprotect			/* 4125 */
33746e12c07SRalf Baechle	PTR	sys_sigprocmask
33846e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was create_module */
33946e12c07SRalf Baechle	PTR	sys_init_module
34046e12c07SRalf Baechle	PTR	sys_delete_module
34146e12c07SRalf Baechle	PTR	sys_ni_syscall			/* 4130 was get_kernel_syms */
34246e12c07SRalf Baechle	PTR	sys_quotactl
34346e12c07SRalf Baechle	PTR	sys_getpgid
34446e12c07SRalf Baechle	PTR	sys_fchdir
34546e12c07SRalf Baechle	PTR	sys_bdflush
34646e12c07SRalf Baechle	PTR	sys_sysfs			/* 4135 */
34746e12c07SRalf Baechle	PTR	sys_personality
34846e12c07SRalf Baechle	PTR	sys_ni_syscall			/* for afs_syscall */
34946e12c07SRalf Baechle	PTR	sys_setfsuid
35046e12c07SRalf Baechle	PTR	sys_setfsgid
35146e12c07SRalf Baechle	PTR	sys_llseek			/* 4140 */
35246e12c07SRalf Baechle	PTR	sys_getdents
35346e12c07SRalf Baechle	PTR	sys_select
35446e12c07SRalf Baechle	PTR	sys_flock
35546e12c07SRalf Baechle	PTR	sys_msync
35646e12c07SRalf Baechle	PTR	sys_readv			/* 4145 */
35746e12c07SRalf Baechle	PTR	sys_writev
35846e12c07SRalf Baechle	PTR	sys_cacheflush
35946e12c07SRalf Baechle	PTR	sys_cachectl
36049955d84SJames Hogan	PTR	__sys_sysmips
36146e12c07SRalf Baechle	PTR	sys_ni_syscall			/* 4150 */
36246e12c07SRalf Baechle	PTR	sys_getsid
36346e12c07SRalf Baechle	PTR	sys_fdatasync
36446e12c07SRalf Baechle	PTR	sys_sysctl
36546e12c07SRalf Baechle	PTR	sys_mlock
36646e12c07SRalf Baechle	PTR	sys_munlock			/* 4155 */
36746e12c07SRalf Baechle	PTR	sys_mlockall
36846e12c07SRalf Baechle	PTR	sys_munlockall
36946e12c07SRalf Baechle	PTR	sys_sched_setparam
37046e12c07SRalf Baechle	PTR	sys_sched_getparam
37146e12c07SRalf Baechle	PTR	sys_sched_setscheduler		/* 4160 */
37246e12c07SRalf Baechle	PTR	sys_sched_getscheduler
37346e12c07SRalf Baechle	PTR	sys_sched_yield
37446e12c07SRalf Baechle	PTR	sys_sched_get_priority_max
37546e12c07SRalf Baechle	PTR	sys_sched_get_priority_min
37646e12c07SRalf Baechle	PTR	sys_sched_rr_get_interval	/* 4165 */
37746e12c07SRalf Baechle	PTR	sys_nanosleep
37846e12c07SRalf Baechle	PTR	sys_mremap
37946e12c07SRalf Baechle	PTR	sys_accept
38046e12c07SRalf Baechle	PTR	sys_bind
38146e12c07SRalf Baechle	PTR	sys_connect			/* 4170 */
38246e12c07SRalf Baechle	PTR	sys_getpeername
38346e12c07SRalf Baechle	PTR	sys_getsockname
38446e12c07SRalf Baechle	PTR	sys_getsockopt
38546e12c07SRalf Baechle	PTR	sys_listen
38646e12c07SRalf Baechle	PTR	sys_recv			/* 4175 */
38746e12c07SRalf Baechle	PTR	sys_recvfrom
38846e12c07SRalf Baechle	PTR	sys_recvmsg
38946e12c07SRalf Baechle	PTR	sys_send
39046e12c07SRalf Baechle	PTR	sys_sendmsg
39146e12c07SRalf Baechle	PTR	sys_sendto			/* 4180 */
39246e12c07SRalf Baechle	PTR	sys_setsockopt
39346e12c07SRalf Baechle	PTR	sys_shutdown
39446e12c07SRalf Baechle	PTR	sys_socket
39546e12c07SRalf Baechle	PTR	sys_socketpair
39646e12c07SRalf Baechle	PTR	sys_setresuid			/* 4185 */
39746e12c07SRalf Baechle	PTR	sys_getresuid
39846e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was sys_query_module */
39946e12c07SRalf Baechle	PTR	sys_poll
40046e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was nfsservctl */
40146e12c07SRalf Baechle	PTR	sys_setresgid			/* 4190 */
40246e12c07SRalf Baechle	PTR	sys_getresgid
40346e12c07SRalf Baechle	PTR	sys_prctl
40446e12c07SRalf Baechle	PTR	sys_rt_sigreturn
40546e12c07SRalf Baechle	PTR	sys_rt_sigaction
40646e12c07SRalf Baechle	PTR	sys_rt_sigprocmask		/* 4195 */
40746e12c07SRalf Baechle	PTR	sys_rt_sigpending
40846e12c07SRalf Baechle	PTR	sys_rt_sigtimedwait
40946e12c07SRalf Baechle	PTR	sys_rt_sigqueueinfo
41046e12c07SRalf Baechle	PTR	sys_rt_sigsuspend
41146e12c07SRalf Baechle	PTR	sys_pread64			/* 4200 */
41246e12c07SRalf Baechle	PTR	sys_pwrite64
41346e12c07SRalf Baechle	PTR	sys_chown
41446e12c07SRalf Baechle	PTR	sys_getcwd
41546e12c07SRalf Baechle	PTR	sys_capget
41646e12c07SRalf Baechle	PTR	sys_capset			/* 4205 */
41746e12c07SRalf Baechle	PTR	sys_sigaltstack
41846e12c07SRalf Baechle	PTR	sys_sendfile
41946e12c07SRalf Baechle	PTR	sys_ni_syscall
42046e12c07SRalf Baechle	PTR	sys_ni_syscall
42146e12c07SRalf Baechle	PTR	sys_mips_mmap2			/* 4210 */
42246e12c07SRalf Baechle	PTR	sys_truncate64
42346e12c07SRalf Baechle	PTR	sys_ftruncate64
42446e12c07SRalf Baechle	PTR	sys_stat64
42546e12c07SRalf Baechle	PTR	sys_lstat64
42646e12c07SRalf Baechle	PTR	sys_fstat64			/* 4215 */
42746e12c07SRalf Baechle	PTR	sys_pivot_root
42846e12c07SRalf Baechle	PTR	sys_mincore
42946e12c07SRalf Baechle	PTR	sys_madvise
43046e12c07SRalf Baechle	PTR	sys_getdents64
43146e12c07SRalf Baechle	PTR	sys_fcntl64			/* 4220 */
43246e12c07SRalf Baechle	PTR	sys_ni_syscall
43346e12c07SRalf Baechle	PTR	sys_gettid
43446e12c07SRalf Baechle	PTR	sys_readahead
43546e12c07SRalf Baechle	PTR	sys_setxattr
43646e12c07SRalf Baechle	PTR	sys_lsetxattr			/* 4225 */
43746e12c07SRalf Baechle	PTR	sys_fsetxattr
43846e12c07SRalf Baechle	PTR	sys_getxattr
43946e12c07SRalf Baechle	PTR	sys_lgetxattr
44046e12c07SRalf Baechle	PTR	sys_fgetxattr
44146e12c07SRalf Baechle	PTR	sys_listxattr			/* 4230 */
44246e12c07SRalf Baechle	PTR	sys_llistxattr
44346e12c07SRalf Baechle	PTR	sys_flistxattr
44446e12c07SRalf Baechle	PTR	sys_removexattr
44546e12c07SRalf Baechle	PTR	sys_lremovexattr
44646e12c07SRalf Baechle	PTR	sys_fremovexattr		/* 4235 */
44746e12c07SRalf Baechle	PTR	sys_tkill
44846e12c07SRalf Baechle	PTR	sys_sendfile64
44946e12c07SRalf Baechle	PTR	sys_futex
450f088fc84SRalf Baechle#ifdef CONFIG_MIPS_MT_FPAFF
451f088fc84SRalf Baechle	/*
452f088fc84SRalf Baechle	 * For FPU affinity scheduling on MIPS MT processors, we need to
453f088fc84SRalf Baechle	 * intercept sys_sched_xxxaffinity() calls until we get a proper hook
4540a0fca9dSViresh Kumar	 * in kernel/sched/core.c.  Considered only temporary we only support
4550a0fca9dSViresh Kumar	 * these hooks for the 32-bit kernel - there is no MIPS64 MT processor
4560a0fca9dSViresh Kumar	 * atm.
457f088fc84SRalf Baechle	 */
45846e12c07SRalf Baechle	PTR	mipsmt_sys_sched_setaffinity
45946e12c07SRalf Baechle	PTR	mipsmt_sys_sched_getaffinity
460f088fc84SRalf Baechle#else
46146e12c07SRalf Baechle	PTR	sys_sched_setaffinity
46246e12c07SRalf Baechle	PTR	sys_sched_getaffinity		/* 4240 */
463f088fc84SRalf Baechle#endif /* CONFIG_MIPS_MT_FPAFF */
46446e12c07SRalf Baechle	PTR	sys_io_setup
46546e12c07SRalf Baechle	PTR	sys_io_destroy
46646e12c07SRalf Baechle	PTR	sys_io_getevents
46746e12c07SRalf Baechle	PTR	sys_io_submit
46846e12c07SRalf Baechle	PTR	sys_io_cancel			/* 4245 */
46946e12c07SRalf Baechle	PTR	sys_exit_group
47046e12c07SRalf Baechle	PTR	sys_lookup_dcookie
47146e12c07SRalf Baechle	PTR	sys_epoll_create
47246e12c07SRalf Baechle	PTR	sys_epoll_ctl
47346e12c07SRalf Baechle	PTR	sys_epoll_wait			/* 4250 */
47446e12c07SRalf Baechle	PTR	sys_remap_file_pages
47546e12c07SRalf Baechle	PTR	sys_set_tid_address
47646e12c07SRalf Baechle	PTR	sys_restart_syscall
47746e12c07SRalf Baechle	PTR	sys_fadvise64_64
47846e12c07SRalf Baechle	PTR	sys_statfs64			/* 4255 */
47946e12c07SRalf Baechle	PTR	sys_fstatfs64
48046e12c07SRalf Baechle	PTR	sys_timer_create
48146e12c07SRalf Baechle	PTR	sys_timer_settime
48246e12c07SRalf Baechle	PTR	sys_timer_gettime
48346e12c07SRalf Baechle	PTR	sys_timer_getoverrun		/* 4260 */
48446e12c07SRalf Baechle	PTR	sys_timer_delete
48546e12c07SRalf Baechle	PTR	sys_clock_settime
48646e12c07SRalf Baechle	PTR	sys_clock_gettime
48746e12c07SRalf Baechle	PTR	sys_clock_getres
48846e12c07SRalf Baechle	PTR	sys_clock_nanosleep		/* 4265 */
48946e12c07SRalf Baechle	PTR	sys_tgkill
49046e12c07SRalf Baechle	PTR	sys_utimes
49146e12c07SRalf Baechle	PTR	sys_mbind
4921ff1ad6bSHuacai Chen	PTR	sys_get_mempolicy
4931ff1ad6bSHuacai Chen	PTR	sys_set_mempolicy		/* 4270 */
49446e12c07SRalf Baechle	PTR	sys_mq_open
49546e12c07SRalf Baechle	PTR	sys_mq_unlink
49646e12c07SRalf Baechle	PTR	sys_mq_timedsend
49746e12c07SRalf Baechle	PTR	sys_mq_timedreceive
49846e12c07SRalf Baechle	PTR	sys_mq_notify			/* 4275 */
49946e12c07SRalf Baechle	PTR	sys_mq_getsetattr
50046e12c07SRalf Baechle	PTR	sys_ni_syscall			/* sys_vserver */
50146e12c07SRalf Baechle	PTR	sys_waitid
50246e12c07SRalf Baechle	PTR	sys_ni_syscall			/* available, was setaltroot */
50346e12c07SRalf Baechle	PTR	sys_add_key			/* 4280 */
50446e12c07SRalf Baechle	PTR	sys_request_key
50546e12c07SRalf Baechle	PTR	sys_keyctl
50646e12c07SRalf Baechle	PTR	sys_set_thread_area
50746e12c07SRalf Baechle	PTR	sys_inotify_init
50846e12c07SRalf Baechle	PTR	sys_inotify_add_watch		/* 4285 */
50946e12c07SRalf Baechle	PTR	sys_inotify_rm_watch
51046e12c07SRalf Baechle	PTR	sys_migrate_pages
51146e12c07SRalf Baechle	PTR	sys_openat
51246e12c07SRalf Baechle	PTR	sys_mkdirat
51346e12c07SRalf Baechle	PTR	sys_mknodat			/* 4290 */
51446e12c07SRalf Baechle	PTR	sys_fchownat
51546e12c07SRalf Baechle	PTR	sys_futimesat
51646e12c07SRalf Baechle	PTR	sys_fstatat64
51746e12c07SRalf Baechle	PTR	sys_unlinkat
51846e12c07SRalf Baechle	PTR	sys_renameat			/* 4295 */
51946e12c07SRalf Baechle	PTR	sys_linkat
52046e12c07SRalf Baechle	PTR	sys_symlinkat
52146e12c07SRalf Baechle	PTR	sys_readlinkat
52246e12c07SRalf Baechle	PTR	sys_fchmodat
52346e12c07SRalf Baechle	PTR	sys_faccessat			/* 4300 */
52446e12c07SRalf Baechle	PTR	sys_pselect6
52546e12c07SRalf Baechle	PTR	sys_ppoll
52646e12c07SRalf Baechle	PTR	sys_unshare
52746e12c07SRalf Baechle	PTR	sys_splice
52846e12c07SRalf Baechle	PTR	sys_sync_file_range		/* 4305 */
52946e12c07SRalf Baechle	PTR	sys_tee
53046e12c07SRalf Baechle	PTR	sys_vmsplice
53146e12c07SRalf Baechle	PTR	sys_move_pages
53246e12c07SRalf Baechle	PTR	sys_set_robust_list
53346e12c07SRalf Baechle	PTR	sys_get_robust_list		/* 4310 */
53446e12c07SRalf Baechle	PTR	sys_kexec_load
53546e12c07SRalf Baechle	PTR	sys_getcpu
53646e12c07SRalf Baechle	PTR	sys_epoll_pwait
53746e12c07SRalf Baechle	PTR	sys_ioprio_set
53846e12c07SRalf Baechle	PTR	sys_ioprio_get			/* 4315 */
53946e12c07SRalf Baechle	PTR	sys_utimensat
54046e12c07SRalf Baechle	PTR	sys_signalfd
54146e12c07SRalf Baechle	PTR	sys_ni_syscall			/* was timerfd */
54246e12c07SRalf Baechle	PTR	sys_eventfd
54346e12c07SRalf Baechle	PTR	sys_fallocate			/* 4320 */
54446e12c07SRalf Baechle	PTR	sys_timerfd_create
54546e12c07SRalf Baechle	PTR	sys_timerfd_gettime
54646e12c07SRalf Baechle	PTR	sys_timerfd_settime
54746e12c07SRalf Baechle	PTR	sys_signalfd4
54846e12c07SRalf Baechle	PTR	sys_eventfd2			/* 4325 */
54946e12c07SRalf Baechle	PTR	sys_epoll_create1
55046e12c07SRalf Baechle	PTR	sys_dup3
55146e12c07SRalf Baechle	PTR	sys_pipe2
55246e12c07SRalf Baechle	PTR	sys_inotify_init1
55346e12c07SRalf Baechle	PTR	sys_preadv			/* 4330 */
55446e12c07SRalf Baechle	PTR	sys_pwritev
55546e12c07SRalf Baechle	PTR	sys_rt_tgsigqueueinfo
55646e12c07SRalf Baechle	PTR	sys_perf_event_open
55746e12c07SRalf Baechle	PTR	sys_accept4
55846e12c07SRalf Baechle	PTR	sys_recvmmsg			/* 4335 */
55946e12c07SRalf Baechle	PTR	sys_fanotify_init
56046e12c07SRalf Baechle	PTR	sys_fanotify_mark
56146e12c07SRalf Baechle	PTR	sys_prlimit64
56246e12c07SRalf Baechle	PTR	sys_name_to_handle_at
56346e12c07SRalf Baechle	PTR	sys_open_by_handle_at		/* 4340 */
56446e12c07SRalf Baechle	PTR	sys_clock_adjtime
56546e12c07SRalf Baechle	PTR	sys_syncfs
56646e12c07SRalf Baechle	PTR	sys_sendmmsg
56746e12c07SRalf Baechle	PTR	sys_setns
56846e12c07SRalf Baechle	PTR	sys_process_vm_readv		/* 4345 */
56946e12c07SRalf Baechle	PTR	sys_process_vm_writev
57046e12c07SRalf Baechle	PTR	sys_kcmp
57146e12c07SRalf Baechle	PTR	sys_finit_module
5726776254bSJames Hogan	PTR	sys_sched_setattr
5736776254bSJames Hogan	PTR	sys_sched_getattr		/* 4350 */
574367f0b50SRalf Baechle	PTR	sys_renameat2
5758855d608SKees Cook	PTR	sys_seccomp
57642944521SRalf Baechle	PTR	sys_getrandom
57742944521SRalf Baechle	PTR	sys_memfd_create
5785df4c8dbSRalf Baechle	PTR	sys_bpf				/* 4355 */
579389cdc5dSRalf Baechle	PTR	sys_execveat
58096fc7a9cSRalf Baechle	PTR	sys_userfaultfd
58196fc7a9cSRalf Baechle	PTR	sys_membarrier
582784567f4SEric B Munson	PTR	sys_mlock2
583e6c058f9SRalf Baechle	PTR	sys_copy_file_range		/* 4360 */
58462d8e644SRalf Baechle	PTR	sys_preadv2
58562d8e644SRalf Baechle	PTR	sys_pwritev2
58611ed3e0eSRalf Baechle	PTR	sys_pkey_mprotect
58711ed3e0eSRalf Baechle	PTR	sys_pkey_alloc
58811ed3e0eSRalf Baechle	PTR	sys_pkey_free			/* 4365 */
5899cb74b5eSJames Hogan	PTR	sys_statx
590e426b375SPaul Burton	PTR	sys_rseq
5914337aac1SPaul Burton	PTR	sys_io_pgetevents
592