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 121*4c21b8fdSMarkos Chandras 122*4c21b8fdSMarkos Chandras /* 123*4c21b8fdSMarkos Chandras * syscall number is in v0 unless we called syscall(__NR_###) 124*4c21b8fdSMarkos Chandras * where the real syscall number is in a0 125*4c21b8fdSMarkos Chandras */ 126*4c21b8fdSMarkos Chandras addiu a1, v0, __NR_O32_Linux 127*4c21b8fdSMarkos Chandras bnez v0, 1f /* __NR_syscall at offset 0 */ 128*4c21b8fdSMarkos Chandras lw a1, PT_R4(sp) 129*4c21b8fdSMarkos Chandras 130*4c21b8fdSMarkos Chandras1: jal syscall_trace_enter 1311da177e4SLinus Torvalds 1329d37c405SMarkos Chandras bltz v0, 2f # seccomp failed? Skip syscall 1339d37c405SMarkos Chandras 13404a7052cSRalf Baechle move t0, s0 13504a7052cSRalf Baechle RESTORE_STATIC 1361da177e4SLinus Torvalds lw a0, PT_R4(sp) # Restore argument registers 1371da177e4SLinus Torvalds lw a1, PT_R5(sp) 1381da177e4SLinus Torvalds lw a2, PT_R6(sp) 1391da177e4SLinus Torvalds lw a3, PT_R7(sp) 14004a7052cSRalf Baechle jalr t0 1411da177e4SLinus Torvalds 1421da177e4SLinus Torvalds li t0, -EMAXERRNO - 1 # error? 1431da177e4SLinus Torvalds sltu t0, t0, v0 1441da177e4SLinus Torvalds sw t0, PT_R7(sp) # set error flag 1451da177e4SLinus Torvalds beqz t0, 1f 1461da177e4SLinus Torvalds 1478f5a00ebSAl Viro lw t1, PT_R2(sp) # syscall number 1481da177e4SLinus Torvalds negu v0 # error 1498f5a00ebSAl Viro sw t1, PT_R0(sp) # save it for syscall restarting 1501da177e4SLinus Torvalds1: sw v0, PT_R2(sp) # result 1511da177e4SLinus Torvalds 1529d37c405SMarkos Chandras2: j syscall_exit 1531da177e4SLinus Torvalds 1541da177e4SLinus Torvalds/* ------------------------------------------------------------------------ */ 1551da177e4SLinus Torvalds 1561da177e4SLinus Torvalds /* 1571da177e4SLinus Torvalds * The stackpointer for a call with more than 4 arguments is bad. 1581da177e4SLinus Torvalds * We probably should handle this case a bit more drastic. 1591da177e4SLinus Torvalds */ 1601da177e4SLinus Torvaldsbad_stack: 1615b89c004SAl Viro li v0, EFAULT 1621da177e4SLinus Torvalds sw v0, PT_R2(sp) 1631da177e4SLinus Torvalds li t0, 1 # set error flag 1641da177e4SLinus Torvalds sw t0, PT_R7(sp) 1651da177e4SLinus Torvalds j o32_syscall_exit 1661da177e4SLinus Torvalds 1671da177e4SLinus Torvalds /* 1681da177e4SLinus Torvalds * The system call does not exist in this kernel 1691da177e4SLinus Torvalds */ 1701da177e4SLinus Torvaldsillegal_syscall: 171bda8229bSAtsushi Nemoto li v0, ENOSYS # error 1721da177e4SLinus Torvalds sw v0, PT_R2(sp) 1731da177e4SLinus Torvalds li t0, 1 # set error flag 1741da177e4SLinus Torvalds sw t0, PT_R7(sp) 1751da177e4SLinus Torvalds j o32_syscall_exit 1761da177e4SLinus Torvalds END(handle_sys) 1771da177e4SLinus Torvalds 1781da177e4SLinus Torvalds LEAF(sys_syscall) 1791da177e4SLinus Torvalds subu t0, a0, __NR_O32_Linux # check syscall number 1801da177e4SLinus Torvalds sltiu v0, t0, __NR_O32_Linux_syscalls + 1 181e807f957SVlad Malov beqz t0, einval # do not recurse 18246e12c07SRalf Baechle sll t1, t0, 2 1831da177e4SLinus Torvalds beqz v0, einval 1841da177e4SLinus Torvalds lw t2, sys_call_table(t1) # syscall routine 1851da177e4SLinus Torvalds 1861da177e4SLinus Torvalds /* Some syscalls like execve get their arguments from struct pt_regs 1871da177e4SLinus Torvalds and claim zero arguments in the syscall table. Thus we have to 1881da177e4SLinus Torvalds assume the worst case and shuffle around all potential arguments. 1891da177e4SLinus Torvalds If you want performance, don't use indirect syscalls. */ 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 sw a0, PT_R4(sp) # .. and push back a0 - a3, some 2021da177e4SLinus Torvalds sw a1, PT_R5(sp) # syscalls expect them there 2031da177e4SLinus Torvalds sw a2, PT_R6(sp) 2041da177e4SLinus Torvalds sw a3, PT_R7(sp) 2051da177e4SLinus Torvalds sw a3, PT_R26(sp) # update a3 for syscall restarting 2061da177e4SLinus Torvalds jr t2 2071da177e4SLinus Torvalds /* Unreached */ 2081da177e4SLinus Torvalds 209fb498e25SAtsushi Nemotoeinval: li v0, -ENOSYS 2101da177e4SLinus Torvalds jr ra 2111da177e4SLinus Torvalds END(sys_syscall) 2121da177e4SLinus Torvalds 21346e12c07SRalf Baechle .align 2 21446e12c07SRalf Baechle .type sys_call_table, @object 21546e12c07SRalf BaechleEXPORT(sys_call_table) 21646e12c07SRalf Baechle PTR sys_syscall /* 4000 */ 21746e12c07SRalf Baechle PTR sys_exit 21846e12c07SRalf Baechle PTR __sys_fork 21946e12c07SRalf Baechle PTR sys_read 22046e12c07SRalf Baechle PTR sys_write 22146e12c07SRalf Baechle PTR sys_open /* 4005 */ 22246e12c07SRalf Baechle PTR sys_close 22346e12c07SRalf Baechle PTR sys_waitpid 22446e12c07SRalf Baechle PTR sys_creat 22546e12c07SRalf Baechle PTR sys_link 22646e12c07SRalf Baechle PTR sys_unlink /* 4010 */ 22746e12c07SRalf Baechle PTR sys_execve 22846e12c07SRalf Baechle PTR sys_chdir 22946e12c07SRalf Baechle PTR sys_time 23046e12c07SRalf Baechle PTR sys_mknod 23146e12c07SRalf Baechle PTR sys_chmod /* 4015 */ 23246e12c07SRalf Baechle PTR sys_lchown 23346e12c07SRalf Baechle PTR sys_ni_syscall 23446e12c07SRalf Baechle PTR sys_ni_syscall /* was sys_stat */ 23546e12c07SRalf Baechle PTR sys_lseek 23646e12c07SRalf Baechle PTR sys_getpid /* 4020 */ 23746e12c07SRalf Baechle PTR sys_mount 23846e12c07SRalf Baechle PTR sys_oldumount 23946e12c07SRalf Baechle PTR sys_setuid 24046e12c07SRalf Baechle PTR sys_getuid 24146e12c07SRalf Baechle PTR sys_stime /* 4025 */ 24246e12c07SRalf Baechle PTR sys_ptrace 24346e12c07SRalf Baechle PTR sys_alarm 24446e12c07SRalf Baechle PTR sys_ni_syscall /* was sys_fstat */ 24546e12c07SRalf Baechle PTR sys_pause 24646e12c07SRalf Baechle PTR sys_utime /* 4030 */ 24746e12c07SRalf Baechle PTR sys_ni_syscall 24846e12c07SRalf Baechle PTR sys_ni_syscall 24946e12c07SRalf Baechle PTR sys_access 25046e12c07SRalf Baechle PTR sys_nice 25146e12c07SRalf Baechle PTR sys_ni_syscall /* 4035 */ 25246e12c07SRalf Baechle PTR sys_sync 25346e12c07SRalf Baechle PTR sys_kill 25446e12c07SRalf Baechle PTR sys_rename 25546e12c07SRalf Baechle PTR sys_mkdir 25646e12c07SRalf Baechle PTR sys_rmdir /* 4040 */ 25746e12c07SRalf Baechle PTR sys_dup 25846e12c07SRalf Baechle PTR sysm_pipe 25946e12c07SRalf Baechle PTR sys_times 26046e12c07SRalf Baechle PTR sys_ni_syscall 26146e12c07SRalf Baechle PTR sys_brk /* 4045 */ 26246e12c07SRalf Baechle PTR sys_setgid 26346e12c07SRalf Baechle PTR sys_getgid 26446e12c07SRalf Baechle PTR sys_ni_syscall /* was signal(2) */ 26546e12c07SRalf Baechle PTR sys_geteuid 26646e12c07SRalf Baechle PTR sys_getegid /* 4050 */ 26746e12c07SRalf Baechle PTR sys_acct 26846e12c07SRalf Baechle PTR sys_umount 26946e12c07SRalf Baechle PTR sys_ni_syscall 27046e12c07SRalf Baechle PTR sys_ioctl 27146e12c07SRalf Baechle PTR sys_fcntl /* 4055 */ 27246e12c07SRalf Baechle PTR sys_ni_syscall 27346e12c07SRalf Baechle PTR sys_setpgid 27446e12c07SRalf Baechle PTR sys_ni_syscall 27546e12c07SRalf Baechle PTR sys_olduname 27646e12c07SRalf Baechle PTR sys_umask /* 4060 */ 27746e12c07SRalf Baechle PTR sys_chroot 27846e12c07SRalf Baechle PTR sys_ustat 27946e12c07SRalf Baechle PTR sys_dup2 28046e12c07SRalf Baechle PTR sys_getppid 28146e12c07SRalf Baechle PTR sys_getpgrp /* 4065 */ 28246e12c07SRalf Baechle PTR sys_setsid 28346e12c07SRalf Baechle PTR sys_sigaction 28446e12c07SRalf Baechle PTR sys_sgetmask 28546e12c07SRalf Baechle PTR sys_ssetmask 28646e12c07SRalf Baechle PTR sys_setreuid /* 4070 */ 28746e12c07SRalf Baechle PTR sys_setregid 28846e12c07SRalf Baechle PTR sys_sigsuspend 28946e12c07SRalf Baechle PTR sys_sigpending 29046e12c07SRalf Baechle PTR sys_sethostname 29146e12c07SRalf Baechle PTR sys_setrlimit /* 4075 */ 29246e12c07SRalf Baechle PTR sys_getrlimit 29346e12c07SRalf Baechle PTR sys_getrusage 29446e12c07SRalf Baechle PTR sys_gettimeofday 29546e12c07SRalf Baechle PTR sys_settimeofday 29646e12c07SRalf Baechle PTR sys_getgroups /* 4080 */ 29746e12c07SRalf Baechle PTR sys_setgroups 29846e12c07SRalf Baechle PTR sys_ni_syscall /* old_select */ 29946e12c07SRalf Baechle PTR sys_symlink 30046e12c07SRalf Baechle PTR sys_ni_syscall /* was sys_lstat */ 30146e12c07SRalf Baechle PTR sys_readlink /* 4085 */ 30246e12c07SRalf Baechle PTR sys_uselib 30346e12c07SRalf Baechle PTR sys_swapon 30446e12c07SRalf Baechle PTR sys_reboot 30546e12c07SRalf Baechle PTR sys_old_readdir 30646e12c07SRalf Baechle PTR sys_mips_mmap /* 4090 */ 30746e12c07SRalf Baechle PTR sys_munmap 30846e12c07SRalf Baechle PTR sys_truncate 30946e12c07SRalf Baechle PTR sys_ftruncate 31046e12c07SRalf Baechle PTR sys_fchmod 31146e12c07SRalf Baechle PTR sys_fchown /* 4095 */ 31246e12c07SRalf Baechle PTR sys_getpriority 31346e12c07SRalf Baechle PTR sys_setpriority 31446e12c07SRalf Baechle PTR sys_ni_syscall 31546e12c07SRalf Baechle PTR sys_statfs 31646e12c07SRalf Baechle PTR sys_fstatfs /* 4100 */ 31746e12c07SRalf Baechle PTR sys_ni_syscall /* was ioperm(2) */ 31846e12c07SRalf Baechle PTR sys_socketcall 31946e12c07SRalf Baechle PTR sys_syslog 32046e12c07SRalf Baechle PTR sys_setitimer 32146e12c07SRalf Baechle PTR sys_getitimer /* 4105 */ 32246e12c07SRalf Baechle PTR sys_newstat 32346e12c07SRalf Baechle PTR sys_newlstat 32446e12c07SRalf Baechle PTR sys_newfstat 32546e12c07SRalf Baechle PTR sys_uname 32646e12c07SRalf Baechle PTR sys_ni_syscall /* 4110 was iopl(2) */ 32746e12c07SRalf Baechle PTR sys_vhangup 32846e12c07SRalf Baechle PTR sys_ni_syscall /* was sys_idle() */ 32946e12c07SRalf Baechle PTR sys_ni_syscall /* was sys_vm86 */ 33046e12c07SRalf Baechle PTR sys_wait4 33146e12c07SRalf Baechle PTR sys_swapoff /* 4115 */ 33246e12c07SRalf Baechle PTR sys_sysinfo 33346e12c07SRalf Baechle PTR sys_ipc 33446e12c07SRalf Baechle PTR sys_fsync 33546e12c07SRalf Baechle PTR sys_sigreturn 33646e12c07SRalf Baechle PTR __sys_clone /* 4120 */ 33746e12c07SRalf Baechle PTR sys_setdomainname 33846e12c07SRalf Baechle PTR sys_newuname 33946e12c07SRalf Baechle PTR sys_ni_syscall /* sys_modify_ldt */ 34046e12c07SRalf Baechle PTR sys_adjtimex 34146e12c07SRalf Baechle PTR sys_mprotect /* 4125 */ 34246e12c07SRalf Baechle PTR sys_sigprocmask 34346e12c07SRalf Baechle PTR sys_ni_syscall /* was create_module */ 34446e12c07SRalf Baechle PTR sys_init_module 34546e12c07SRalf Baechle PTR sys_delete_module 34646e12c07SRalf Baechle PTR sys_ni_syscall /* 4130 was get_kernel_syms */ 34746e12c07SRalf Baechle PTR sys_quotactl 34846e12c07SRalf Baechle PTR sys_getpgid 34946e12c07SRalf Baechle PTR sys_fchdir 35046e12c07SRalf Baechle PTR sys_bdflush 35146e12c07SRalf Baechle PTR sys_sysfs /* 4135 */ 35246e12c07SRalf Baechle PTR sys_personality 35346e12c07SRalf Baechle PTR sys_ni_syscall /* for afs_syscall */ 35446e12c07SRalf Baechle PTR sys_setfsuid 35546e12c07SRalf Baechle PTR sys_setfsgid 35646e12c07SRalf Baechle PTR sys_llseek /* 4140 */ 35746e12c07SRalf Baechle PTR sys_getdents 35846e12c07SRalf Baechle PTR sys_select 35946e12c07SRalf Baechle PTR sys_flock 36046e12c07SRalf Baechle PTR sys_msync 36146e12c07SRalf Baechle PTR sys_readv /* 4145 */ 36246e12c07SRalf Baechle PTR sys_writev 36346e12c07SRalf Baechle PTR sys_cacheflush 36446e12c07SRalf Baechle PTR sys_cachectl 36546e12c07SRalf Baechle PTR sys_sysmips 36646e12c07SRalf Baechle PTR sys_ni_syscall /* 4150 */ 36746e12c07SRalf Baechle PTR sys_getsid 36846e12c07SRalf Baechle PTR sys_fdatasync 36946e12c07SRalf Baechle PTR sys_sysctl 37046e12c07SRalf Baechle PTR sys_mlock 37146e12c07SRalf Baechle PTR sys_munlock /* 4155 */ 37246e12c07SRalf Baechle PTR sys_mlockall 37346e12c07SRalf Baechle PTR sys_munlockall 37446e12c07SRalf Baechle PTR sys_sched_setparam 37546e12c07SRalf Baechle PTR sys_sched_getparam 37646e12c07SRalf Baechle PTR sys_sched_setscheduler /* 4160 */ 37746e12c07SRalf Baechle PTR sys_sched_getscheduler 37846e12c07SRalf Baechle PTR sys_sched_yield 37946e12c07SRalf Baechle PTR sys_sched_get_priority_max 38046e12c07SRalf Baechle PTR sys_sched_get_priority_min 38146e12c07SRalf Baechle PTR sys_sched_rr_get_interval /* 4165 */ 38246e12c07SRalf Baechle PTR sys_nanosleep 38346e12c07SRalf Baechle PTR sys_mremap 38446e12c07SRalf Baechle PTR sys_accept 38546e12c07SRalf Baechle PTR sys_bind 38646e12c07SRalf Baechle PTR sys_connect /* 4170 */ 38746e12c07SRalf Baechle PTR sys_getpeername 38846e12c07SRalf Baechle PTR sys_getsockname 38946e12c07SRalf Baechle PTR sys_getsockopt 39046e12c07SRalf Baechle PTR sys_listen 39146e12c07SRalf Baechle PTR sys_recv /* 4175 */ 39246e12c07SRalf Baechle PTR sys_recvfrom 39346e12c07SRalf Baechle PTR sys_recvmsg 39446e12c07SRalf Baechle PTR sys_send 39546e12c07SRalf Baechle PTR sys_sendmsg 39646e12c07SRalf Baechle PTR sys_sendto /* 4180 */ 39746e12c07SRalf Baechle PTR sys_setsockopt 39846e12c07SRalf Baechle PTR sys_shutdown 39946e12c07SRalf Baechle PTR sys_socket 40046e12c07SRalf Baechle PTR sys_socketpair 40146e12c07SRalf Baechle PTR sys_setresuid /* 4185 */ 40246e12c07SRalf Baechle PTR sys_getresuid 40346e12c07SRalf Baechle PTR sys_ni_syscall /* was sys_query_module */ 40446e12c07SRalf Baechle PTR sys_poll 40546e12c07SRalf Baechle PTR sys_ni_syscall /* was nfsservctl */ 40646e12c07SRalf Baechle PTR sys_setresgid /* 4190 */ 40746e12c07SRalf Baechle PTR sys_getresgid 40846e12c07SRalf Baechle PTR sys_prctl 40946e12c07SRalf Baechle PTR sys_rt_sigreturn 41046e12c07SRalf Baechle PTR sys_rt_sigaction 41146e12c07SRalf Baechle PTR sys_rt_sigprocmask /* 4195 */ 41246e12c07SRalf Baechle PTR sys_rt_sigpending 41346e12c07SRalf Baechle PTR sys_rt_sigtimedwait 41446e12c07SRalf Baechle PTR sys_rt_sigqueueinfo 41546e12c07SRalf Baechle PTR sys_rt_sigsuspend 41646e12c07SRalf Baechle PTR sys_pread64 /* 4200 */ 41746e12c07SRalf Baechle PTR sys_pwrite64 41846e12c07SRalf Baechle PTR sys_chown 41946e12c07SRalf Baechle PTR sys_getcwd 42046e12c07SRalf Baechle PTR sys_capget 42146e12c07SRalf Baechle PTR sys_capset /* 4205 */ 42246e12c07SRalf Baechle PTR sys_sigaltstack 42346e12c07SRalf Baechle PTR sys_sendfile 42446e12c07SRalf Baechle PTR sys_ni_syscall 42546e12c07SRalf Baechle PTR sys_ni_syscall 42646e12c07SRalf Baechle PTR sys_mips_mmap2 /* 4210 */ 42746e12c07SRalf Baechle PTR sys_truncate64 42846e12c07SRalf Baechle PTR sys_ftruncate64 42946e12c07SRalf Baechle PTR sys_stat64 43046e12c07SRalf Baechle PTR sys_lstat64 43146e12c07SRalf Baechle PTR sys_fstat64 /* 4215 */ 43246e12c07SRalf Baechle PTR sys_pivot_root 43346e12c07SRalf Baechle PTR sys_mincore 43446e12c07SRalf Baechle PTR sys_madvise 43546e12c07SRalf Baechle PTR sys_getdents64 43646e12c07SRalf Baechle PTR sys_fcntl64 /* 4220 */ 43746e12c07SRalf Baechle PTR sys_ni_syscall 43846e12c07SRalf Baechle PTR sys_gettid 43946e12c07SRalf Baechle PTR sys_readahead 44046e12c07SRalf Baechle PTR sys_setxattr 44146e12c07SRalf Baechle PTR sys_lsetxattr /* 4225 */ 44246e12c07SRalf Baechle PTR sys_fsetxattr 44346e12c07SRalf Baechle PTR sys_getxattr 44446e12c07SRalf Baechle PTR sys_lgetxattr 44546e12c07SRalf Baechle PTR sys_fgetxattr 44646e12c07SRalf Baechle PTR sys_listxattr /* 4230 */ 44746e12c07SRalf Baechle PTR sys_llistxattr 44846e12c07SRalf Baechle PTR sys_flistxattr 44946e12c07SRalf Baechle PTR sys_removexattr 45046e12c07SRalf Baechle PTR sys_lremovexattr 45146e12c07SRalf Baechle PTR sys_fremovexattr /* 4235 */ 45246e12c07SRalf Baechle PTR sys_tkill 45346e12c07SRalf Baechle PTR sys_sendfile64 45446e12c07SRalf Baechle PTR sys_futex 455f088fc84SRalf Baechle#ifdef CONFIG_MIPS_MT_FPAFF 456f088fc84SRalf Baechle /* 457f088fc84SRalf Baechle * For FPU affinity scheduling on MIPS MT processors, we need to 458f088fc84SRalf Baechle * intercept sys_sched_xxxaffinity() calls until we get a proper hook 4590a0fca9dSViresh Kumar * in kernel/sched/core.c. Considered only temporary we only support 4600a0fca9dSViresh Kumar * these hooks for the 32-bit kernel - there is no MIPS64 MT processor 4610a0fca9dSViresh Kumar * atm. 462f088fc84SRalf Baechle */ 46346e12c07SRalf Baechle PTR mipsmt_sys_sched_setaffinity 46446e12c07SRalf Baechle PTR mipsmt_sys_sched_getaffinity 465f088fc84SRalf Baechle#else 46646e12c07SRalf Baechle PTR sys_sched_setaffinity 46746e12c07SRalf Baechle PTR sys_sched_getaffinity /* 4240 */ 468f088fc84SRalf Baechle#endif /* CONFIG_MIPS_MT_FPAFF */ 46946e12c07SRalf Baechle PTR sys_io_setup 47046e12c07SRalf Baechle PTR sys_io_destroy 47146e12c07SRalf Baechle PTR sys_io_getevents 47246e12c07SRalf Baechle PTR sys_io_submit 47346e12c07SRalf Baechle PTR sys_io_cancel /* 4245 */ 47446e12c07SRalf Baechle PTR sys_exit_group 47546e12c07SRalf Baechle PTR sys_lookup_dcookie 47646e12c07SRalf Baechle PTR sys_epoll_create 47746e12c07SRalf Baechle PTR sys_epoll_ctl 47846e12c07SRalf Baechle PTR sys_epoll_wait /* 4250 */ 47946e12c07SRalf Baechle PTR sys_remap_file_pages 48046e12c07SRalf Baechle PTR sys_set_tid_address 48146e12c07SRalf Baechle PTR sys_restart_syscall 48246e12c07SRalf Baechle PTR sys_fadvise64_64 48346e12c07SRalf Baechle PTR sys_statfs64 /* 4255 */ 48446e12c07SRalf Baechle PTR sys_fstatfs64 48546e12c07SRalf Baechle PTR sys_timer_create 48646e12c07SRalf Baechle PTR sys_timer_settime 48746e12c07SRalf Baechle PTR sys_timer_gettime 48846e12c07SRalf Baechle PTR sys_timer_getoverrun /* 4260 */ 48946e12c07SRalf Baechle PTR sys_timer_delete 49046e12c07SRalf Baechle PTR sys_clock_settime 49146e12c07SRalf Baechle PTR sys_clock_gettime 49246e12c07SRalf Baechle PTR sys_clock_getres 49346e12c07SRalf Baechle PTR sys_clock_nanosleep /* 4265 */ 49446e12c07SRalf Baechle PTR sys_tgkill 49546e12c07SRalf Baechle PTR sys_utimes 49646e12c07SRalf Baechle PTR sys_mbind 49746e12c07SRalf Baechle PTR sys_ni_syscall /* sys_get_mempolicy */ 49846e12c07SRalf Baechle PTR sys_ni_syscall /* 4270 sys_set_mempolicy */ 49946e12c07SRalf Baechle PTR sys_mq_open 50046e12c07SRalf Baechle PTR sys_mq_unlink 50146e12c07SRalf Baechle PTR sys_mq_timedsend 50246e12c07SRalf Baechle PTR sys_mq_timedreceive 50346e12c07SRalf Baechle PTR sys_mq_notify /* 4275 */ 50446e12c07SRalf Baechle PTR sys_mq_getsetattr 50546e12c07SRalf Baechle PTR sys_ni_syscall /* sys_vserver */ 50646e12c07SRalf Baechle PTR sys_waitid 50746e12c07SRalf Baechle PTR sys_ni_syscall /* available, was setaltroot */ 50846e12c07SRalf Baechle PTR sys_add_key /* 4280 */ 50946e12c07SRalf Baechle PTR sys_request_key 51046e12c07SRalf Baechle PTR sys_keyctl 51146e12c07SRalf Baechle PTR sys_set_thread_area 51246e12c07SRalf Baechle PTR sys_inotify_init 51346e12c07SRalf Baechle PTR sys_inotify_add_watch /* 4285 */ 51446e12c07SRalf Baechle PTR sys_inotify_rm_watch 51546e12c07SRalf Baechle PTR sys_migrate_pages 51646e12c07SRalf Baechle PTR sys_openat 51746e12c07SRalf Baechle PTR sys_mkdirat 51846e12c07SRalf Baechle PTR sys_mknodat /* 4290 */ 51946e12c07SRalf Baechle PTR sys_fchownat 52046e12c07SRalf Baechle PTR sys_futimesat 52146e12c07SRalf Baechle PTR sys_fstatat64 52246e12c07SRalf Baechle PTR sys_unlinkat 52346e12c07SRalf Baechle PTR sys_renameat /* 4295 */ 52446e12c07SRalf Baechle PTR sys_linkat 52546e12c07SRalf Baechle PTR sys_symlinkat 52646e12c07SRalf Baechle PTR sys_readlinkat 52746e12c07SRalf Baechle PTR sys_fchmodat 52846e12c07SRalf Baechle PTR sys_faccessat /* 4300 */ 52946e12c07SRalf Baechle PTR sys_pselect6 53046e12c07SRalf Baechle PTR sys_ppoll 53146e12c07SRalf Baechle PTR sys_unshare 53246e12c07SRalf Baechle PTR sys_splice 53346e12c07SRalf Baechle PTR sys_sync_file_range /* 4305 */ 53446e12c07SRalf Baechle PTR sys_tee 53546e12c07SRalf Baechle PTR sys_vmsplice 53646e12c07SRalf Baechle PTR sys_move_pages 53746e12c07SRalf Baechle PTR sys_set_robust_list 53846e12c07SRalf Baechle PTR sys_get_robust_list /* 4310 */ 53946e12c07SRalf Baechle PTR sys_kexec_load 54046e12c07SRalf Baechle PTR sys_getcpu 54146e12c07SRalf Baechle PTR sys_epoll_pwait 54246e12c07SRalf Baechle PTR sys_ioprio_set 54346e12c07SRalf Baechle PTR sys_ioprio_get /* 4315 */ 54446e12c07SRalf Baechle PTR sys_utimensat 54546e12c07SRalf Baechle PTR sys_signalfd 54646e12c07SRalf Baechle PTR sys_ni_syscall /* was timerfd */ 54746e12c07SRalf Baechle PTR sys_eventfd 54846e12c07SRalf Baechle PTR sys_fallocate /* 4320 */ 54946e12c07SRalf Baechle PTR sys_timerfd_create 55046e12c07SRalf Baechle PTR sys_timerfd_gettime 55146e12c07SRalf Baechle PTR sys_timerfd_settime 55246e12c07SRalf Baechle PTR sys_signalfd4 55346e12c07SRalf Baechle PTR sys_eventfd2 /* 4325 */ 55446e12c07SRalf Baechle PTR sys_epoll_create1 55546e12c07SRalf Baechle PTR sys_dup3 55646e12c07SRalf Baechle PTR sys_pipe2 55746e12c07SRalf Baechle PTR sys_inotify_init1 55846e12c07SRalf Baechle PTR sys_preadv /* 4330 */ 55946e12c07SRalf Baechle PTR sys_pwritev 56046e12c07SRalf Baechle PTR sys_rt_tgsigqueueinfo 56146e12c07SRalf Baechle PTR sys_perf_event_open 56246e12c07SRalf Baechle PTR sys_accept4 56346e12c07SRalf Baechle PTR sys_recvmmsg /* 4335 */ 56446e12c07SRalf Baechle PTR sys_fanotify_init 56546e12c07SRalf Baechle PTR sys_fanotify_mark 56646e12c07SRalf Baechle PTR sys_prlimit64 56746e12c07SRalf Baechle PTR sys_name_to_handle_at 56846e12c07SRalf Baechle PTR sys_open_by_handle_at /* 4340 */ 56946e12c07SRalf Baechle PTR sys_clock_adjtime 57046e12c07SRalf Baechle PTR sys_syncfs 57146e12c07SRalf Baechle PTR sys_sendmmsg 57246e12c07SRalf Baechle PTR sys_setns 57346e12c07SRalf Baechle PTR sys_process_vm_readv /* 4345 */ 57446e12c07SRalf Baechle PTR sys_process_vm_writev 57546e12c07SRalf Baechle PTR sys_kcmp 57646e12c07SRalf Baechle PTR sys_finit_module 5776776254bSJames Hogan PTR sys_sched_setattr 5786776254bSJames Hogan PTR sys_sched_getattr /* 4350 */ 579