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 43*46e12c07SRalf 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 51*46e12c07SRalf Baechle /* 52*46e12c07SRalf Baechle * More than four arguments. Try to deal with it by copying the 53*46e12c07SRalf Baechle * stack arguments from the user stack to the kernel stack. 54*46e12c07SRalf Baechle * This Sucks (TM). 55*46e12c07SRalf Baechle */ 56*46e12c07SRalf Baechle lw t0, PT_R29(sp) # get old user stack pointer 57*46e12c07SRalf Baechle 58*46e12c07SRalf Baechle /* 59*46e12c07SRalf Baechle * We intentionally keep the kernel stack a little below the top of 60*46e12c07SRalf Baechle * userspace so we don't have to do a slower byte accurate check here. 61*46e12c07SRalf Baechle */ 62*46e12c07SRalf Baechle lw t5, TI_ADDR_LIMIT($28) 63*46e12c07SRalf Baechle addu t4, t0, 32 64*46e12c07SRalf Baechle and t5, t4 65*46e12c07SRalf Baechle bltz t5, bad_stack # -> sp is bad 66*46e12c07SRalf Baechle 67*46e12c07SRalf Baechle /* 68*46e12c07SRalf Baechle * Ok, copy the args from the luser stack to the kernel stack. 69*46e12c07SRalf Baechle * t3 is the precomputed number of instruction bytes needed to 70*46e12c07SRalf Baechle * load or store arguments 6-8. 71*46e12c07SRalf Baechle */ 72*46e12c07SRalf Baechle 73*46e12c07SRalf Baechle .set push 74*46e12c07SRalf Baechle .set noreorder 75*46e12c07SRalf Baechle .set nomacro 76*46e12c07SRalf Baechle 77*46e12c07SRalf Baechle1: lw t5, 16(t0) # argument #5 from usp 78*46e12c07SRalf Baechle4: lw t6, 20(t0) # argument #6 from usp 79*46e12c07SRalf Baechle3: lw t7, 24(t0) # argument #7 from usp 80*46e12c07SRalf Baechle2: lw t8, 28(t0) # argument #8 from usp 81*46e12c07SRalf Baechle 82*46e12c07SRalf Baechle sw t5, 16(sp) # argument #5 to ksp 83*46e12c07SRalf Baechle sw t6, 20(sp) # argument #6 to ksp 84*46e12c07SRalf Baechle sw t7, 24(sp) # argument #7 to ksp 85*46e12c07SRalf Baechle sw t8, 28(sp) # argument #8 to ksp 86*46e12c07SRalf Baechle .set pop 87*46e12c07SRalf Baechle 88*46e12c07SRalf Baechle .section __ex_table,"a" 89*46e12c07SRalf Baechle PTR 1b,bad_stack 90*46e12c07SRalf Baechle PTR 2b,bad_stack 91*46e12c07SRalf Baechle PTR 3b,bad_stack 92*46e12c07SRalf Baechle PTR 4b,bad_stack 93*46e12c07SRalf Baechle .previous 94*46e12c07SRalf 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 12304a7052cSRalf Baechle move t0, s0 12404a7052cSRalf Baechle RESTORE_STATIC 1251da177e4SLinus Torvalds lw a0, PT_R4(sp) # Restore argument registers 1261da177e4SLinus Torvalds lw a1, PT_R5(sp) 1271da177e4SLinus Torvalds lw a2, PT_R6(sp) 1281da177e4SLinus Torvalds lw a3, PT_R7(sp) 12904a7052cSRalf Baechle jalr t0 1301da177e4SLinus Torvalds 1311da177e4SLinus Torvalds li t0, -EMAXERRNO - 1 # error? 1321da177e4SLinus Torvalds sltu t0, t0, v0 1331da177e4SLinus Torvalds sw t0, PT_R7(sp) # set error flag 1341da177e4SLinus Torvalds beqz t0, 1f 1351da177e4SLinus Torvalds 1368f5a00ebSAl Viro lw t1, PT_R2(sp) # syscall number 1371da177e4SLinus Torvalds negu v0 # error 1388f5a00ebSAl Viro sw t1, PT_R0(sp) # save it for syscall restarting 1391da177e4SLinus Torvalds1: sw v0, PT_R2(sp) # result 1401da177e4SLinus Torvalds 1411da177e4SLinus Torvalds j syscall_exit 1421da177e4SLinus Torvalds 1431da177e4SLinus Torvalds/* ------------------------------------------------------------------------ */ 1441da177e4SLinus Torvalds 1451da177e4SLinus Torvalds /* 1461da177e4SLinus Torvalds * The stackpointer for a call with more than 4 arguments is bad. 1471da177e4SLinus Torvalds * 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 1561da177e4SLinus Torvalds /* 1571da177e4SLinus Torvalds * The system call does not exist in this kernel 1581da177e4SLinus Torvalds */ 1591da177e4SLinus Torvaldsillegal_syscall: 160bda8229bSAtsushi Nemoto li v0, ENOSYS # error 1611da177e4SLinus Torvalds sw v0, PT_R2(sp) 1621da177e4SLinus Torvalds li t0, 1 # set error flag 1631da177e4SLinus Torvalds sw t0, PT_R7(sp) 1641da177e4SLinus Torvalds j o32_syscall_exit 1651da177e4SLinus Torvalds END(handle_sys) 1661da177e4SLinus Torvalds 1671da177e4SLinus Torvalds LEAF(sys_syscall) 1681da177e4SLinus Torvalds subu t0, a0, __NR_O32_Linux # check syscall number 1691da177e4SLinus Torvalds sltiu v0, t0, __NR_O32_Linux_syscalls + 1 170e807f957SVlad Malov beqz t0, einval # do not recurse 171*46e12c07SRalf Baechle sll t1, t0, 2 1721da177e4SLinus Torvalds beqz v0, einval 1731da177e4SLinus Torvalds lw t2, sys_call_table(t1) # syscall routine 1741da177e4SLinus Torvalds 1751da177e4SLinus Torvalds /* Some syscalls like execve get their arguments from struct pt_regs 1761da177e4SLinus Torvalds and claim zero arguments in the syscall table. Thus we have to 1771da177e4SLinus Torvalds assume the worst case and shuffle around all potential arguments. 1781da177e4SLinus Torvalds If you want performance, don't use indirect syscalls. */ 1791da177e4SLinus Torvalds 1801da177e4SLinus Torvalds move a0, a1 # shift argument registers 1811da177e4SLinus Torvalds move a1, a2 1821da177e4SLinus Torvalds move a2, a3 1831da177e4SLinus Torvalds lw a3, 16(sp) 1841da177e4SLinus Torvalds lw t4, 20(sp) 1851da177e4SLinus Torvalds lw t5, 24(sp) 1861da177e4SLinus Torvalds lw t6, 28(sp) 1871da177e4SLinus Torvalds sw t4, 16(sp) 1881da177e4SLinus Torvalds sw t5, 20(sp) 1891da177e4SLinus Torvalds sw t6, 24(sp) 1901da177e4SLinus Torvalds sw a0, PT_R4(sp) # .. and push back a0 - a3, some 1911da177e4SLinus Torvalds sw a1, PT_R5(sp) # syscalls expect them there 1921da177e4SLinus Torvalds sw a2, PT_R6(sp) 1931da177e4SLinus Torvalds sw a3, PT_R7(sp) 1941da177e4SLinus Torvalds sw a3, PT_R26(sp) # update a3 for syscall restarting 1951da177e4SLinus Torvalds jr t2 1961da177e4SLinus Torvalds /* Unreached */ 1971da177e4SLinus Torvalds 198fb498e25SAtsushi Nemotoeinval: li v0, -ENOSYS 1991da177e4SLinus Torvalds jr ra 2001da177e4SLinus Torvalds END(sys_syscall) 2011da177e4SLinus Torvalds 202*46e12c07SRalf Baechle .align 2 203*46e12c07SRalf Baechle .type sys_call_table, @object 204*46e12c07SRalf BaechleEXPORT(sys_call_table) 205*46e12c07SRalf Baechle PTR sys_syscall /* 4000 */ 206*46e12c07SRalf Baechle PTR sys_exit 207*46e12c07SRalf Baechle PTR __sys_fork 208*46e12c07SRalf Baechle PTR sys_read 209*46e12c07SRalf Baechle PTR sys_write 210*46e12c07SRalf Baechle PTR sys_open /* 4005 */ 211*46e12c07SRalf Baechle PTR sys_close 212*46e12c07SRalf Baechle PTR sys_waitpid 213*46e12c07SRalf Baechle PTR sys_creat 214*46e12c07SRalf Baechle PTR sys_link 215*46e12c07SRalf Baechle PTR sys_unlink /* 4010 */ 216*46e12c07SRalf Baechle PTR sys_execve 217*46e12c07SRalf Baechle PTR sys_chdir 218*46e12c07SRalf Baechle PTR sys_time 219*46e12c07SRalf Baechle PTR sys_mknod 220*46e12c07SRalf Baechle PTR sys_chmod /* 4015 */ 221*46e12c07SRalf Baechle PTR sys_lchown 222*46e12c07SRalf Baechle PTR sys_ni_syscall 223*46e12c07SRalf Baechle PTR sys_ni_syscall /* was sys_stat */ 224*46e12c07SRalf Baechle PTR sys_lseek 225*46e12c07SRalf Baechle PTR sys_getpid /* 4020 */ 226*46e12c07SRalf Baechle PTR sys_mount 227*46e12c07SRalf Baechle PTR sys_oldumount 228*46e12c07SRalf Baechle PTR sys_setuid 229*46e12c07SRalf Baechle PTR sys_getuid 230*46e12c07SRalf Baechle PTR sys_stime /* 4025 */ 231*46e12c07SRalf Baechle PTR sys_ptrace 232*46e12c07SRalf Baechle PTR sys_alarm 233*46e12c07SRalf Baechle PTR sys_ni_syscall /* was sys_fstat */ 234*46e12c07SRalf Baechle PTR sys_pause 235*46e12c07SRalf Baechle PTR sys_utime /* 4030 */ 236*46e12c07SRalf Baechle PTR sys_ni_syscall 237*46e12c07SRalf Baechle PTR sys_ni_syscall 238*46e12c07SRalf Baechle PTR sys_access 239*46e12c07SRalf Baechle PTR sys_nice 240*46e12c07SRalf Baechle PTR sys_ni_syscall /* 4035 */ 241*46e12c07SRalf Baechle PTR sys_sync 242*46e12c07SRalf Baechle PTR sys_kill 243*46e12c07SRalf Baechle PTR sys_rename 244*46e12c07SRalf Baechle PTR sys_mkdir 245*46e12c07SRalf Baechle PTR sys_rmdir /* 4040 */ 246*46e12c07SRalf Baechle PTR sys_dup 247*46e12c07SRalf Baechle PTR sysm_pipe 248*46e12c07SRalf Baechle PTR sys_times 249*46e12c07SRalf Baechle PTR sys_ni_syscall 250*46e12c07SRalf Baechle PTR sys_brk /* 4045 */ 251*46e12c07SRalf Baechle PTR sys_setgid 252*46e12c07SRalf Baechle PTR sys_getgid 253*46e12c07SRalf Baechle PTR sys_ni_syscall /* was signal(2) */ 254*46e12c07SRalf Baechle PTR sys_geteuid 255*46e12c07SRalf Baechle PTR sys_getegid /* 4050 */ 256*46e12c07SRalf Baechle PTR sys_acct 257*46e12c07SRalf Baechle PTR sys_umount 258*46e12c07SRalf Baechle PTR sys_ni_syscall 259*46e12c07SRalf Baechle PTR sys_ioctl 260*46e12c07SRalf Baechle PTR sys_fcntl /* 4055 */ 261*46e12c07SRalf Baechle PTR sys_ni_syscall 262*46e12c07SRalf Baechle PTR sys_setpgid 263*46e12c07SRalf Baechle PTR sys_ni_syscall 264*46e12c07SRalf Baechle PTR sys_olduname 265*46e12c07SRalf Baechle PTR sys_umask /* 4060 */ 266*46e12c07SRalf Baechle PTR sys_chroot 267*46e12c07SRalf Baechle PTR sys_ustat 268*46e12c07SRalf Baechle PTR sys_dup2 269*46e12c07SRalf Baechle PTR sys_getppid 270*46e12c07SRalf Baechle PTR sys_getpgrp /* 4065 */ 271*46e12c07SRalf Baechle PTR sys_setsid 272*46e12c07SRalf Baechle PTR sys_sigaction 273*46e12c07SRalf Baechle PTR sys_sgetmask 274*46e12c07SRalf Baechle PTR sys_ssetmask 275*46e12c07SRalf Baechle PTR sys_setreuid /* 4070 */ 276*46e12c07SRalf Baechle PTR sys_setregid 277*46e12c07SRalf Baechle PTR sys_sigsuspend 278*46e12c07SRalf Baechle PTR sys_sigpending 279*46e12c07SRalf Baechle PTR sys_sethostname 280*46e12c07SRalf Baechle PTR sys_setrlimit /* 4075 */ 281*46e12c07SRalf Baechle PTR sys_getrlimit 282*46e12c07SRalf Baechle PTR sys_getrusage 283*46e12c07SRalf Baechle PTR sys_gettimeofday 284*46e12c07SRalf Baechle PTR sys_settimeofday 285*46e12c07SRalf Baechle PTR sys_getgroups /* 4080 */ 286*46e12c07SRalf Baechle PTR sys_setgroups 287*46e12c07SRalf Baechle PTR sys_ni_syscall /* old_select */ 288*46e12c07SRalf Baechle PTR sys_symlink 289*46e12c07SRalf Baechle PTR sys_ni_syscall /* was sys_lstat */ 290*46e12c07SRalf Baechle PTR sys_readlink /* 4085 */ 291*46e12c07SRalf Baechle PTR sys_uselib 292*46e12c07SRalf Baechle PTR sys_swapon 293*46e12c07SRalf Baechle PTR sys_reboot 294*46e12c07SRalf Baechle PTR sys_old_readdir 295*46e12c07SRalf Baechle PTR sys_mips_mmap /* 4090 */ 296*46e12c07SRalf Baechle PTR sys_munmap 297*46e12c07SRalf Baechle PTR sys_truncate 298*46e12c07SRalf Baechle PTR sys_ftruncate 299*46e12c07SRalf Baechle PTR sys_fchmod 300*46e12c07SRalf Baechle PTR sys_fchown /* 4095 */ 301*46e12c07SRalf Baechle PTR sys_getpriority 302*46e12c07SRalf Baechle PTR sys_setpriority 303*46e12c07SRalf Baechle PTR sys_ni_syscall 304*46e12c07SRalf Baechle PTR sys_statfs 305*46e12c07SRalf Baechle PTR sys_fstatfs /* 4100 */ 306*46e12c07SRalf Baechle PTR sys_ni_syscall /* was ioperm(2) */ 307*46e12c07SRalf Baechle PTR sys_socketcall 308*46e12c07SRalf Baechle PTR sys_syslog 309*46e12c07SRalf Baechle PTR sys_setitimer 310*46e12c07SRalf Baechle PTR sys_getitimer /* 4105 */ 311*46e12c07SRalf Baechle PTR sys_newstat 312*46e12c07SRalf Baechle PTR sys_newlstat 313*46e12c07SRalf Baechle PTR sys_newfstat 314*46e12c07SRalf Baechle PTR sys_uname 315*46e12c07SRalf Baechle PTR sys_ni_syscall /* 4110 was iopl(2) */ 316*46e12c07SRalf Baechle PTR sys_vhangup 317*46e12c07SRalf Baechle PTR sys_ni_syscall /* was sys_idle() */ 318*46e12c07SRalf Baechle PTR sys_ni_syscall /* was sys_vm86 */ 319*46e12c07SRalf Baechle PTR sys_wait4 320*46e12c07SRalf Baechle PTR sys_swapoff /* 4115 */ 321*46e12c07SRalf Baechle PTR sys_sysinfo 322*46e12c07SRalf Baechle PTR sys_ipc 323*46e12c07SRalf Baechle PTR sys_fsync 324*46e12c07SRalf Baechle PTR sys_sigreturn 325*46e12c07SRalf Baechle PTR __sys_clone /* 4120 */ 326*46e12c07SRalf Baechle PTR sys_setdomainname 327*46e12c07SRalf Baechle PTR sys_newuname 328*46e12c07SRalf Baechle PTR sys_ni_syscall /* sys_modify_ldt */ 329*46e12c07SRalf Baechle PTR sys_adjtimex 330*46e12c07SRalf Baechle PTR sys_mprotect /* 4125 */ 331*46e12c07SRalf Baechle PTR sys_sigprocmask 332*46e12c07SRalf Baechle PTR sys_ni_syscall /* was create_module */ 333*46e12c07SRalf Baechle PTR sys_init_module 334*46e12c07SRalf Baechle PTR sys_delete_module 335*46e12c07SRalf Baechle PTR sys_ni_syscall /* 4130 was get_kernel_syms */ 336*46e12c07SRalf Baechle PTR sys_quotactl 337*46e12c07SRalf Baechle PTR sys_getpgid 338*46e12c07SRalf Baechle PTR sys_fchdir 339*46e12c07SRalf Baechle PTR sys_bdflush 340*46e12c07SRalf Baechle PTR sys_sysfs /* 4135 */ 341*46e12c07SRalf Baechle PTR sys_personality 342*46e12c07SRalf Baechle PTR sys_ni_syscall /* for afs_syscall */ 343*46e12c07SRalf Baechle PTR sys_setfsuid 344*46e12c07SRalf Baechle PTR sys_setfsgid 345*46e12c07SRalf Baechle PTR sys_llseek /* 4140 */ 346*46e12c07SRalf Baechle PTR sys_getdents 347*46e12c07SRalf Baechle PTR sys_select 348*46e12c07SRalf Baechle PTR sys_flock 349*46e12c07SRalf Baechle PTR sys_msync 350*46e12c07SRalf Baechle PTR sys_readv /* 4145 */ 351*46e12c07SRalf Baechle PTR sys_writev 352*46e12c07SRalf Baechle PTR sys_cacheflush 353*46e12c07SRalf Baechle PTR sys_cachectl 354*46e12c07SRalf Baechle PTR sys_sysmips 355*46e12c07SRalf Baechle PTR sys_ni_syscall /* 4150 */ 356*46e12c07SRalf Baechle PTR sys_getsid 357*46e12c07SRalf Baechle PTR sys_fdatasync 358*46e12c07SRalf Baechle PTR sys_sysctl 359*46e12c07SRalf Baechle PTR sys_mlock 360*46e12c07SRalf Baechle PTR sys_munlock /* 4155 */ 361*46e12c07SRalf Baechle PTR sys_mlockall 362*46e12c07SRalf Baechle PTR sys_munlockall 363*46e12c07SRalf Baechle PTR sys_sched_setparam 364*46e12c07SRalf Baechle PTR sys_sched_getparam 365*46e12c07SRalf Baechle PTR sys_sched_setscheduler /* 4160 */ 366*46e12c07SRalf Baechle PTR sys_sched_getscheduler 367*46e12c07SRalf Baechle PTR sys_sched_yield 368*46e12c07SRalf Baechle PTR sys_sched_get_priority_max 369*46e12c07SRalf Baechle PTR sys_sched_get_priority_min 370*46e12c07SRalf Baechle PTR sys_sched_rr_get_interval /* 4165 */ 371*46e12c07SRalf Baechle PTR sys_nanosleep 372*46e12c07SRalf Baechle PTR sys_mremap 373*46e12c07SRalf Baechle PTR sys_accept 374*46e12c07SRalf Baechle PTR sys_bind 375*46e12c07SRalf Baechle PTR sys_connect /* 4170 */ 376*46e12c07SRalf Baechle PTR sys_getpeername 377*46e12c07SRalf Baechle PTR sys_getsockname 378*46e12c07SRalf Baechle PTR sys_getsockopt 379*46e12c07SRalf Baechle PTR sys_listen 380*46e12c07SRalf Baechle PTR sys_recv /* 4175 */ 381*46e12c07SRalf Baechle PTR sys_recvfrom 382*46e12c07SRalf Baechle PTR sys_recvmsg 383*46e12c07SRalf Baechle PTR sys_send 384*46e12c07SRalf Baechle PTR sys_sendmsg 385*46e12c07SRalf Baechle PTR sys_sendto /* 4180 */ 386*46e12c07SRalf Baechle PTR sys_setsockopt 387*46e12c07SRalf Baechle PTR sys_shutdown 388*46e12c07SRalf Baechle PTR sys_socket 389*46e12c07SRalf Baechle PTR sys_socketpair 390*46e12c07SRalf Baechle PTR sys_setresuid /* 4185 */ 391*46e12c07SRalf Baechle PTR sys_getresuid 392*46e12c07SRalf Baechle PTR sys_ni_syscall /* was sys_query_module */ 393*46e12c07SRalf Baechle PTR sys_poll 394*46e12c07SRalf Baechle PTR sys_ni_syscall /* was nfsservctl */ 395*46e12c07SRalf Baechle PTR sys_setresgid /* 4190 */ 396*46e12c07SRalf Baechle PTR sys_getresgid 397*46e12c07SRalf Baechle PTR sys_prctl 398*46e12c07SRalf Baechle PTR sys_rt_sigreturn 399*46e12c07SRalf Baechle PTR sys_rt_sigaction 400*46e12c07SRalf Baechle PTR sys_rt_sigprocmask /* 4195 */ 401*46e12c07SRalf Baechle PTR sys_rt_sigpending 402*46e12c07SRalf Baechle PTR sys_rt_sigtimedwait 403*46e12c07SRalf Baechle PTR sys_rt_sigqueueinfo 404*46e12c07SRalf Baechle PTR sys_rt_sigsuspend 405*46e12c07SRalf Baechle PTR sys_pread64 /* 4200 */ 406*46e12c07SRalf Baechle PTR sys_pwrite64 407*46e12c07SRalf Baechle PTR sys_chown 408*46e12c07SRalf Baechle PTR sys_getcwd 409*46e12c07SRalf Baechle PTR sys_capget 410*46e12c07SRalf Baechle PTR sys_capset /* 4205 */ 411*46e12c07SRalf Baechle PTR sys_sigaltstack 412*46e12c07SRalf Baechle PTR sys_sendfile 413*46e12c07SRalf Baechle PTR sys_ni_syscall 414*46e12c07SRalf Baechle PTR sys_ni_syscall 415*46e12c07SRalf Baechle PTR sys_mips_mmap2 /* 4210 */ 416*46e12c07SRalf Baechle PTR sys_truncate64 417*46e12c07SRalf Baechle PTR sys_ftruncate64 418*46e12c07SRalf Baechle PTR sys_stat64 419*46e12c07SRalf Baechle PTR sys_lstat64 420*46e12c07SRalf Baechle PTR sys_fstat64 /* 4215 */ 421*46e12c07SRalf Baechle PTR sys_pivot_root 422*46e12c07SRalf Baechle PTR sys_mincore 423*46e12c07SRalf Baechle PTR sys_madvise 424*46e12c07SRalf Baechle PTR sys_getdents64 425*46e12c07SRalf Baechle PTR sys_fcntl64 /* 4220 */ 426*46e12c07SRalf Baechle PTR sys_ni_syscall 427*46e12c07SRalf Baechle PTR sys_gettid 428*46e12c07SRalf Baechle PTR sys_readahead 429*46e12c07SRalf Baechle PTR sys_setxattr 430*46e12c07SRalf Baechle PTR sys_lsetxattr /* 4225 */ 431*46e12c07SRalf Baechle PTR sys_fsetxattr 432*46e12c07SRalf Baechle PTR sys_getxattr 433*46e12c07SRalf Baechle PTR sys_lgetxattr 434*46e12c07SRalf Baechle PTR sys_fgetxattr 435*46e12c07SRalf Baechle PTR sys_listxattr /* 4230 */ 436*46e12c07SRalf Baechle PTR sys_llistxattr 437*46e12c07SRalf Baechle PTR sys_flistxattr 438*46e12c07SRalf Baechle PTR sys_removexattr 439*46e12c07SRalf Baechle PTR sys_lremovexattr 440*46e12c07SRalf Baechle PTR sys_fremovexattr /* 4235 */ 441*46e12c07SRalf Baechle PTR sys_tkill 442*46e12c07SRalf Baechle PTR sys_sendfile64 443*46e12c07SRalf Baechle PTR sys_futex 444f088fc84SRalf Baechle#ifdef CONFIG_MIPS_MT_FPAFF 445f088fc84SRalf Baechle /* 446f088fc84SRalf Baechle * For FPU affinity scheduling on MIPS MT processors, we need to 447f088fc84SRalf Baechle * intercept sys_sched_xxxaffinity() calls until we get a proper hook 4480a0fca9dSViresh Kumar * in kernel/sched/core.c. Considered only temporary we only support 4490a0fca9dSViresh Kumar * these hooks for the 32-bit kernel - there is no MIPS64 MT processor 4500a0fca9dSViresh Kumar * atm. 451f088fc84SRalf Baechle */ 452*46e12c07SRalf Baechle PTR mipsmt_sys_sched_setaffinity 453*46e12c07SRalf Baechle PTR mipsmt_sys_sched_getaffinity 454f088fc84SRalf Baechle#else 455*46e12c07SRalf Baechle PTR sys_sched_setaffinity 456*46e12c07SRalf Baechle PTR sys_sched_getaffinity /* 4240 */ 457f088fc84SRalf Baechle#endif /* CONFIG_MIPS_MT_FPAFF */ 458*46e12c07SRalf Baechle PTR sys_io_setup 459*46e12c07SRalf Baechle PTR sys_io_destroy 460*46e12c07SRalf Baechle PTR sys_io_getevents 461*46e12c07SRalf Baechle PTR sys_io_submit 462*46e12c07SRalf Baechle PTR sys_io_cancel /* 4245 */ 463*46e12c07SRalf Baechle PTR sys_exit_group 464*46e12c07SRalf Baechle PTR sys_lookup_dcookie 465*46e12c07SRalf Baechle PTR sys_epoll_create 466*46e12c07SRalf Baechle PTR sys_epoll_ctl 467*46e12c07SRalf Baechle PTR sys_epoll_wait /* 4250 */ 468*46e12c07SRalf Baechle PTR sys_remap_file_pages 469*46e12c07SRalf Baechle PTR sys_set_tid_address 470*46e12c07SRalf Baechle PTR sys_restart_syscall 471*46e12c07SRalf Baechle PTR sys_fadvise64_64 472*46e12c07SRalf Baechle PTR sys_statfs64 /* 4255 */ 473*46e12c07SRalf Baechle PTR sys_fstatfs64 474*46e12c07SRalf Baechle PTR sys_timer_create 475*46e12c07SRalf Baechle PTR sys_timer_settime 476*46e12c07SRalf Baechle PTR sys_timer_gettime 477*46e12c07SRalf Baechle PTR sys_timer_getoverrun /* 4260 */ 478*46e12c07SRalf Baechle PTR sys_timer_delete 479*46e12c07SRalf Baechle PTR sys_clock_settime 480*46e12c07SRalf Baechle PTR sys_clock_gettime 481*46e12c07SRalf Baechle PTR sys_clock_getres 482*46e12c07SRalf Baechle PTR sys_clock_nanosleep /* 4265 */ 483*46e12c07SRalf Baechle PTR sys_tgkill 484*46e12c07SRalf Baechle PTR sys_utimes 485*46e12c07SRalf Baechle PTR sys_mbind 486*46e12c07SRalf Baechle PTR sys_ni_syscall /* sys_get_mempolicy */ 487*46e12c07SRalf Baechle PTR sys_ni_syscall /* 4270 sys_set_mempolicy */ 488*46e12c07SRalf Baechle PTR sys_mq_open 489*46e12c07SRalf Baechle PTR sys_mq_unlink 490*46e12c07SRalf Baechle PTR sys_mq_timedsend 491*46e12c07SRalf Baechle PTR sys_mq_timedreceive 492*46e12c07SRalf Baechle PTR sys_mq_notify /* 4275 */ 493*46e12c07SRalf Baechle PTR sys_mq_getsetattr 494*46e12c07SRalf Baechle PTR sys_ni_syscall /* sys_vserver */ 495*46e12c07SRalf Baechle PTR sys_waitid 496*46e12c07SRalf Baechle PTR sys_ni_syscall /* available, was setaltroot */ 497*46e12c07SRalf Baechle PTR sys_add_key /* 4280 */ 498*46e12c07SRalf Baechle PTR sys_request_key 499*46e12c07SRalf Baechle PTR sys_keyctl 500*46e12c07SRalf Baechle PTR sys_set_thread_area 501*46e12c07SRalf Baechle PTR sys_inotify_init 502*46e12c07SRalf Baechle PTR sys_inotify_add_watch /* 4285 */ 503*46e12c07SRalf Baechle PTR sys_inotify_rm_watch 504*46e12c07SRalf Baechle PTR sys_migrate_pages 505*46e12c07SRalf Baechle PTR sys_openat 506*46e12c07SRalf Baechle PTR sys_mkdirat 507*46e12c07SRalf Baechle PTR sys_mknodat /* 4290 */ 508*46e12c07SRalf Baechle PTR sys_fchownat 509*46e12c07SRalf Baechle PTR sys_futimesat 510*46e12c07SRalf Baechle PTR sys_fstatat64 511*46e12c07SRalf Baechle PTR sys_unlinkat 512*46e12c07SRalf Baechle PTR sys_renameat /* 4295 */ 513*46e12c07SRalf Baechle PTR sys_linkat 514*46e12c07SRalf Baechle PTR sys_symlinkat 515*46e12c07SRalf Baechle PTR sys_readlinkat 516*46e12c07SRalf Baechle PTR sys_fchmodat 517*46e12c07SRalf Baechle PTR sys_faccessat /* 4300 */ 518*46e12c07SRalf Baechle PTR sys_pselect6 519*46e12c07SRalf Baechle PTR sys_ppoll 520*46e12c07SRalf Baechle PTR sys_unshare 521*46e12c07SRalf Baechle PTR sys_splice 522*46e12c07SRalf Baechle PTR sys_sync_file_range /* 4305 */ 523*46e12c07SRalf Baechle PTR sys_tee 524*46e12c07SRalf Baechle PTR sys_vmsplice 525*46e12c07SRalf Baechle PTR sys_move_pages 526*46e12c07SRalf Baechle PTR sys_set_robust_list 527*46e12c07SRalf Baechle PTR sys_get_robust_list /* 4310 */ 528*46e12c07SRalf Baechle PTR sys_kexec_load 529*46e12c07SRalf Baechle PTR sys_getcpu 530*46e12c07SRalf Baechle PTR sys_epoll_pwait 531*46e12c07SRalf Baechle PTR sys_ioprio_set 532*46e12c07SRalf Baechle PTR sys_ioprio_get /* 4315 */ 533*46e12c07SRalf Baechle PTR sys_utimensat 534*46e12c07SRalf Baechle PTR sys_signalfd 535*46e12c07SRalf Baechle PTR sys_ni_syscall /* was timerfd */ 536*46e12c07SRalf Baechle PTR sys_eventfd 537*46e12c07SRalf Baechle PTR sys_fallocate /* 4320 */ 538*46e12c07SRalf Baechle PTR sys_timerfd_create 539*46e12c07SRalf Baechle PTR sys_timerfd_gettime 540*46e12c07SRalf Baechle PTR sys_timerfd_settime 541*46e12c07SRalf Baechle PTR sys_signalfd4 542*46e12c07SRalf Baechle PTR sys_eventfd2 /* 4325 */ 543*46e12c07SRalf Baechle PTR sys_epoll_create1 544*46e12c07SRalf Baechle PTR sys_dup3 545*46e12c07SRalf Baechle PTR sys_pipe2 546*46e12c07SRalf Baechle PTR sys_inotify_init1 547*46e12c07SRalf Baechle PTR sys_preadv /* 4330 */ 548*46e12c07SRalf Baechle PTR sys_pwritev 549*46e12c07SRalf Baechle PTR sys_rt_tgsigqueueinfo 550*46e12c07SRalf Baechle PTR sys_perf_event_open 551*46e12c07SRalf Baechle PTR sys_accept4 552*46e12c07SRalf Baechle PTR sys_recvmmsg /* 4335 */ 553*46e12c07SRalf Baechle PTR sys_fanotify_init 554*46e12c07SRalf Baechle PTR sys_fanotify_mark 555*46e12c07SRalf Baechle PTR sys_prlimit64 556*46e12c07SRalf Baechle PTR sys_name_to_handle_at 557*46e12c07SRalf Baechle PTR sys_open_by_handle_at /* 4340 */ 558*46e12c07SRalf Baechle PTR sys_clock_adjtime 559*46e12c07SRalf Baechle PTR sys_syncfs 560*46e12c07SRalf Baechle PTR sys_sendmmsg 561*46e12c07SRalf Baechle PTR sys_setns 562*46e12c07SRalf Baechle PTR sys_process_vm_readv /* 4345 */ 563*46e12c07SRalf Baechle PTR sys_process_vm_writev 564*46e12c07SRalf Baechle PTR sys_kcmp 565*46e12c07SRalf Baechle PTR sys_finit_module 566