1 /* 1 /* 2 * This file is subject to the terms and condi 2 * This file is subject to the terms and conditions of the GNU General Public 3 * License. See the file "COPYING" in the mai 3 * License. See the file "COPYING" in the main directory of this archive 4 * for more details. 4 * for more details. 5 * 5 * 6 * Copyright (C) 1995 - 2000, 2001 by Ralf Bae 6 * Copyright (C) 1995 - 2000, 2001 by Ralf Baechle 7 * Copyright (C) 1999, 2000 Silicon Graphics, 7 * Copyright (C) 1999, 2000 Silicon Graphics, Inc. 8 * Copyright (C) 2001 MIPS Technologies, Inc. 8 * Copyright (C) 2001 MIPS Technologies, Inc. 9 * Copyright (C) 2004 Thiemo Seufer << 10 * 9 * 11 * Hairy, the userspace application uses a dif 10 * Hairy, the userspace application uses a different argument passing 12 * convention than the kernel, so we have to t 11 * convention than the kernel, so we have to translate things from o32 13 * to ABI64 calling convention. 64-bit syscal !! 12 * to ABI64 calling convention. 64-bit syscalls are also processed 14 * here for now. 13 * here for now. 15 */ 14 */ 16 #include <linux/errno.h> 15 #include <linux/errno.h> 17 #include <asm/asm.h> 16 #include <asm/asm.h> 18 #include <asm/asmmacro.h> 17 #include <asm/asmmacro.h> 19 #include <asm/irqflags.h> << 20 #include <asm/mipsregs.h> 18 #include <asm/mipsregs.h> 21 #include <asm/regdef.h> 19 #include <asm/regdef.h> 22 #include <asm/stackframe.h> 20 #include <asm/stackframe.h> 23 #include <asm/thread_info.h> << 24 #include <asm/unistd.h> 21 #include <asm/unistd.h> 25 #include <asm/sysmips.h> 22 #include <asm/sysmips.h> 26 23 27 .align 5 !! 24 .align 5 28 NESTED(handle_sys, PT_SIZE, sp) 25 NESTED(handle_sys, PT_SIZE, sp) 29 .set noat 26 .set noat 30 SAVE_SOME 27 SAVE_SOME 31 TRACE_IRQS_ON_RELOAD << 32 STI 28 STI 33 .set at 29 .set at 34 ld t1, PT_EPC(sp) # skip 30 ld t1, PT_EPC(sp) # skip syscall on return 35 31 36 dsubu t0, v0, __NR_O32_Linux # chec !! 32 subu t0, v0, __NR_O32_Linux # check syscall number 37 sltiu t0, t0, __NR_O32_Linux_syscall !! 33 sltiu t0, t0, __NR_O32_Linux_syscalls + 1 38 daddiu t1, 4 # skip 34 daddiu t1, 4 # skip to next instruction 39 sd t1, PT_EPC(sp) << 40 beqz t0, not_o32_scall 35 beqz t0, not_o32_scall >> 36 sd t1, PT_EPC(sp) 41 #if 0 37 #if 0 42 SAVE_ALL 38 SAVE_ALL 43 move a1, v0 39 move a1, v0 44 ASM_PRINT("Scall %ld\n") !! 40 PRINT("Scall %ld\n") 45 RESTORE_ALL 41 RESTORE_ALL 46 #endif 42 #endif 47 43 48 /* We don't want to stumble over broke << 49 userland. O32 does never use the up << 50 sll a0, a0, 0 44 sll a0, a0, 0 51 sll a1, a1, 0 45 sll a1, a1, 0 52 sll a2, a2, 0 46 sll a2, a2, 0 53 sll a3, a3, 0 47 sll a3, a3, 0 54 48 55 sd a3, PT_R26(sp) # save !! 49 /* XXX Put both in one cacheline, should save a bit. */ 56 !! 50 dsll t0, v0, 3 # offset into table 57 /* !! 51 ld t2, (sys_call_table - (__NR_O32_Linux * 8))(t0) 58 * More than four arguments. Try to d !! 52 lbu t3, (sys_narg_table - __NR_O32_Linux)(v0) 59 * stack arguments from the user stack << 60 * This Sucks (TM). << 61 * << 62 * We intentionally keep the kernel st << 63 * userspace so we don't have to do a << 64 */ << 65 ld t0, PT_R29(sp) # get << 66 daddu t1, t0, 32 << 67 bltz t1, bad_stack << 68 << 69 load_a4: lw a4, 16(t0) # argu << 70 load_a5: lw a5, 20(t0) # argu << 71 load_a6: lw a6, 24(t0) # argu << 72 load_a7: lw a7, 28(t0) # argu << 73 loads_done: << 74 << 75 .section __ex_table,"a" << 76 PTR_WD load_a4, bad_stack_a4 << 77 PTR_WD load_a5, bad_stack_a5 << 78 PTR_WD load_a6, bad_stack_a6 << 79 PTR_WD load_a7, bad_stack_a7 << 80 .previous << 81 << 82 /* << 83 * absolute syscall number is in v0 un << 84 * where the real syscall number is in << 85 * note: NR_syscall is the first O32 s << 86 * only defined when compiling with -m << 87 * therefore __NR_O32_Linux is used (4 << 88 */ << 89 53 90 subu t2, v0, __NR_O32_Linux !! 54 subu t0, t3, 5 # 5 or more arguments? 91 bnez t2, 1f /* __NR_syscall at offs !! 55 sd a3, PT_R26(sp) # save a3 for syscall restarting 92 LONG_S a0, TI_SYSCALL($28) # Save !! 56 bgez t0, stackargs 93 b 2f << 94 1: << 95 LONG_S v0, TI_SYSCALL($28) # Save << 96 2: << 97 57 98 li t1, _TIF_WORK_SYSCALL_ENTRY !! 58 stack_done: 99 LONG_L t0, TI_FLAGS($28) # sysc !! 59 LONG_L t0, TI_FLAGS($28) 100 and t0, t1, t0 !! 60 # syscall tracing enabled? 101 bnez t0, trace_a_syscall 61 bnez t0, trace_a_syscall 102 62 103 syscall_common: << 104 dsll t0, v0, 3 # offs << 105 ld t2, (sys32_call_table - (__NR_ << 106 << 107 jalr t2 # Do T 63 jalr t2 # Do The Real Thing (TM) 108 64 109 li t0, -EMAXERRNO - 1 # erro 65 li t0, -EMAXERRNO - 1 # error? 110 sltu t0, t0, v0 66 sltu t0, t0, v0 111 sd t0, PT_R7(sp) # set 67 sd t0, PT_R7(sp) # set error flag 112 beqz t0, 1f 68 beqz t0, 1f 113 69 114 ld t1, PT_R2(sp) # sysc !! 70 negu v0 # error 115 dnegu v0 # erro !! 71 sd v0, PT_R0(sp) # flag for syscall restarting 116 sd t1, PT_R0(sp) # save << 117 1: sd v0, PT_R2(sp) # resu 72 1: sd v0, PT_R2(sp) # result 118 73 119 o32_syscall_exit: !! 74 FEXPORT(o32_syscall_exit) 120 j syscall_exit_partial !! 75 local_irq_disable # make need_resched and >> 76 # signals dont change between >> 77 # sampling and return >> 78 LONG_L a2, TI_FLAGS($28) >> 79 bnez a2, o32_syscall_exit_work >> 80 >> 81 RESTORE_SOME >> 82 RESTORE_SP_AND_RET >> 83 >> 84 o32_syscall_exit_work: >> 85 SAVE_STATIC >> 86 j syscall_exit_work 121 87 122 /* ------------------------------------------- 88 /* ------------------------------------------------------------------------ */ 123 89 124 trace_a_syscall: 90 trace_a_syscall: 125 SAVE_STATIC 91 SAVE_STATIC 126 sd a4, PT_R8(sp) # Save !! 92 sd a4, PT_R8(sp) 127 sd a5, PT_R9(sp) 93 sd a5, PT_R9(sp) 128 sd a6, PT_R10(sp) 94 sd a6, PT_R10(sp) 129 sd a7, PT_R11(sp) # For !! 95 sd a7, PT_R11(sp) 130 96 131 move a0, sp !! 97 sd t2,PT_R1(sp) 132 jal syscall_trace_enter !! 98 jal do_syscall_trace >> 99 ld t2,PT_R1(sp) 133 100 134 bltz v0, 1f # secc << 135 << 136 RESTORE_STATIC << 137 ld v0, PT_R2(sp) # Rest << 138 ld a0, PT_R4(sp) # Rest 101 ld a0, PT_R4(sp) # Restore argument registers 139 ld a1, PT_R5(sp) 102 ld a1, PT_R5(sp) 140 ld a2, PT_R6(sp) 103 ld a2, PT_R6(sp) 141 ld a3, PT_R7(sp) 104 ld a3, PT_R7(sp) 142 ld a4, PT_R8(sp) 105 ld a4, PT_R8(sp) 143 ld a5, PT_R9(sp) 106 ld a5, PT_R9(sp) 144 ld a6, PT_R10(sp) << 145 ld a7, PT_R11(sp) # For << 146 107 147 dsubu t0, v0, __NR_O32_Linux # chec !! 108 jalr t2 148 sltiu t0, t0, __NR_O32_Linux_syscall << 149 beqz t0, not_o32_scall << 150 109 151 j syscall_common !! 110 li t0, -EMAXERRNO - 1 # error? >> 111 sltu t0, t0, v0 >> 112 sd t0, PT_R7(sp) # set error flag >> 113 beqz t0, 1f 152 114 153 1: j syscall_exit !! 115 negu v0 # error >> 116 sd v0, PT_R0(sp) # set flag for syscall restarting >> 117 1: sd v0, PT_R2(sp) # result >> 118 >> 119 j syscall_exit 154 120 155 /* ------------------------------------------- 121 /* ------------------------------------------------------------------------ */ 156 122 157 /* 123 /* >> 124 * More than four arguments. Try to deal with it by copying the >> 125 * stack arguments from the user stack to the kernel stack. >> 126 * This Sucks (TM). >> 127 */ >> 128 stackargs: >> 129 ld t0, PT_R29(sp) # get old user stack pointer >> 130 subu t3, 4 >> 131 sll t1, t3, 2 # stack valid? >> 132 >> 133 addu t1, t0 # end address >> 134 or t0, t1 >> 135 bltz t0, bad_stack # -> sp is bad >> 136 >> 137 ld t0, PT_R29(sp) # get old user stack pointer >> 138 PTR_LA t1, 3f # copy 1 to 2 arguments >> 139 sll t3, t3, 2 >> 140 subu t1, t3 >> 141 jr t1 >> 142 >> 143 /* Ok, copy the args from the luser stack to the kernel stack */ >> 144 .set push >> 145 .set noreorder >> 146 .set nomacro >> 147 1: lw a5, 20(t0) # argument #6 from usp >> 148 2: lw a4, 16(t0) # argument #5 from usp >> 149 3: .set pop >> 150 >> 151 j stack_done # go back >> 152 >> 153 .section __ex_table,"a" >> 154 PTR 1b, bad_stack >> 155 PTR 2b, bad_stack >> 156 .previous >> 157 >> 158 /* 158 * The stackpointer for a call with mo 159 * The stackpointer for a call with more than 4 arguments is bad. 159 */ 160 */ 160 bad_stack: 161 bad_stack: 161 li v0, EFAULT !! 162 negu v0 # error >> 163 sd v0, PT_R0(sp) 162 sd v0, PT_R2(sp) 164 sd v0, PT_R2(sp) 163 li t0, 1 # set 165 li t0, 1 # set error flag 164 sd t0, PT_R7(sp) 166 sd t0, PT_R7(sp) 165 j o32_syscall_exit 167 j o32_syscall_exit 166 168 167 bad_stack_a4: << 168 li a4, 0 << 169 b load_a5 << 170 << 171 bad_stack_a5: << 172 li a5, 0 << 173 b load_a6 << 174 << 175 bad_stack_a6: << 176 li a6, 0 << 177 b load_a7 << 178 << 179 bad_stack_a7: << 180 li a7, 0 << 181 b loads_done << 182 << 183 not_o32_scall: 169 not_o32_scall: 184 /* 170 /* 185 * This is not an o32 compatibility sy 171 * This is not an o32 compatibility syscall, pass it on 186 * to the 64-bit syscall handlers. 172 * to the 64-bit syscall handlers. 187 */ 173 */ 188 #ifdef CONFIG_MIPS32_N32 174 #ifdef CONFIG_MIPS32_N32 189 j handle_sysn32 175 j handle_sysn32 190 #else 176 #else 191 j handle_sys64 177 j handle_sys64 192 #endif 178 #endif >> 179 >> 180 illegal_syscall: >> 181 /* This also isn't a 64-bit syscall, throw an error. */ >> 182 li v0, ENOSYS # error >> 183 sd v0, PT_R2(sp) >> 184 li t0, 1 # set error flag >> 185 sd t0, PT_R7(sp) >> 186 j o32_syscall_exit 193 END(handle_sys) 187 END(handle_sys) 194 188 195 LEAF(sys32_syscall) 189 LEAF(sys32_syscall) 196 subu t0, a0, __NR_O32_Linux # chec !! 190 ld t0, PT_R29(sp) # user sp 197 sltiu v0, t0, __NR_O32_Linux_syscall !! 191 198 beqz t0, einval # do n !! 192 sltu v0, a0, __NR_O32_Linux + __NR_O32_Linux_syscalls + 1 199 dsll t1, t0, 3 !! 193 beqz v0, enosys 200 beqz v0, einval !! 194 201 ld t2, sys32_call_table(t1) !! 195 dsll v0, a0, 3 >> 196 dla v1, sys32_syscall >> 197 ld t2, (sys_call_table - (__NR_O32_Linux * 8))(v0) >> 198 lbu t3, (sys_narg_table - __NR_O32_Linux)(a0) >> 199 >> 200 li v0, -EINVAL >> 201 beq t2, v1, out # do not recurse >> 202 >> 203 beqz t2, enosys # null function pointer? >> 204 >> 205 andi v0, t0, 0x3 # unaligned stack pointer? >> 206 bnez v0, sigsegv >> 207 >> 208 daddiu v0, t0, 16 # v0 = usp + 16 >> 209 daddu t1, v0, 12 # 3 32-bit arguments >> 210 ld v1, TI_ADDR_LIMIT($28) >> 211 or v0, v0, t1 >> 212 and v1, v1, v0 >> 213 bnez v1, efault 202 214 203 move a0, a1 # shif 215 move a0, a1 # shift argument registers 204 move a1, a2 216 move a1, a2 205 move a2, a3 217 move a2, a3 206 move a3, a4 !! 218 207 move a4, a5 !! 219 1: lw a3, 16(t0) 208 move a5, a6 !! 220 2: lw t3, 20(t0) 209 move a6, a7 !! 221 3: lw t1, 24(t0) >> 222 >> 223 .section __ex_table,"a" >> 224 PTR 1b, efault >> 225 PTR 2b, efault >> 226 PTR 3b, efault >> 227 .previous >> 228 >> 229 sw t3, 16(sp) # put into new stackframe >> 230 sw t1, 20(sp) >> 231 >> 232 bnez t1, 1f # zero arguments? >> 233 daddu a0, sp, 32 # then pass sp in a0 >> 234 1: >> 235 >> 236 sw t3, 16(sp) >> 237 sw v1, 20(sp) 210 jr t2 238 jr t2 211 /* Unreached */ 239 /* Unreached */ 212 240 213 einval: li v0, -ENOSYS !! 241 enosys: li v0, -ENOSYS 214 jr ra !! 242 b out >> 243 >> 244 sigsegv: >> 245 li a0, _SIGSEGV >> 246 move a1, $28 >> 247 jal force_sig >> 248 /* Fall through */ >> 249 >> 250 efault: li v0, -EFAULT >> 251 >> 252 out: jr ra 215 END(sys32_syscall) 253 END(sys32_syscall) 216 254 217 #define __SYSCALL_WITH_COMPAT(nr, native, comp !! 255 .macro syscalltable 218 #define __SYSCALL(nr, entry) PTR_WD entry !! 256 sys sys32_syscall 0 /* 4000 */ >> 257 sys sys_exit 1 >> 258 sys sys_fork 0 >> 259 sys sys_read 3 >> 260 sys sys_write 3 >> 261 sys sys_open 3 /* 4005 */ >> 262 sys sys_close 1 >> 263 sys sys_waitpid 3 >> 264 sys sys_creat 2 >> 265 sys sys_link 2 >> 266 sys sys_unlink 1 /* 4010 */ >> 267 sys sys32_execve 0 >> 268 sys sys_chdir 1 >> 269 sys sys_time 1 >> 270 sys sys_mknod 3 >> 271 sys sys_chmod 2 /* 4015 */ >> 272 sys sys_lchown 3 >> 273 sys sys_ni_syscall 0 >> 274 sys sys_ni_syscall 0 /* was sys_stat */ >> 275 sys sys_lseek 3 >> 276 sys sys_getpid 0 /* 4020 */ >> 277 sys sys_mount 5 >> 278 sys sys_oldumount 1 >> 279 sys sys_setuid 1 >> 280 sys sys_getuid 0 >> 281 sys sys_stime 1 /* 4025 */ >> 282 sys sys32_ptrace 4 >> 283 sys sys_alarm 1 >> 284 sys sys_ni_syscall 0 /* was sys_fstat */ >> 285 sys sys_pause 0 >> 286 sys compat_sys_utime 2 /* 4030 */ >> 287 sys sys_ni_syscall 0 >> 288 sys sys_ni_syscall 0 >> 289 sys sys_access 2 >> 290 sys sys_nice 1 >> 291 sys sys_ni_syscall 0 /* 4035 */ >> 292 sys sys_sync 0 >> 293 sys sys_kill 2 >> 294 sys sys_rename 2 >> 295 sys sys_mkdir 2 >> 296 sys sys_rmdir 1 /* 4040 */ >> 297 sys sys_dup 1 >> 298 sys sys_pipe 0 >> 299 sys compat_sys_times 1 >> 300 sys sys_ni_syscall 0 >> 301 sys sys_brk 1 /* 4045 */ >> 302 sys sys_setgid 1 >> 303 sys sys_getgid 0 >> 304 sys sys_ni_syscall 0 /* was signal 2 */ >> 305 sys sys_geteuid 0 >> 306 sys sys_getegid 0 /* 4050 */ >> 307 sys sys_acct 0 >> 308 sys sys_umount 2 >> 309 sys sys_ni_syscall 0 >> 310 sys compat_sys_ioctl 3 >> 311 sys compat_sys_fcntl 3 /* 4055 */ >> 312 sys sys_ni_syscall 2 >> 313 sys sys_setpgid 2 >> 314 sys sys_ni_syscall, 0 >> 315 sys sys_olduname 1 >> 316 sys sys_umask 1 /* 4060 */ >> 317 sys sys_chroot 1 >> 318 sys sys_ustat 2 >> 319 sys sys_dup2 2 >> 320 sys sys_getppid 0 >> 321 sys sys_getpgrp 0 /* 4065 */ >> 322 sys sys_setsid 0 >> 323 sys sys32_sigaction 3 >> 324 sys sys_sgetmask 0 >> 325 sys sys_ssetmask 1 >> 326 sys sys_setreuid 2 /* 4070 */ >> 327 sys sys_setregid 2 >> 328 sys sys32_sigsuspend 0 >> 329 sys compat_sys_sigpending 1 >> 330 sys sys_sethostname 2 >> 331 sys compat_sys_setrlimit 2 /* 4075 */ >> 332 sys compat_sys_getrlimit 2 >> 333 sys compat_sys_getrusage 2 >> 334 sys sys32_gettimeofday 2 >> 335 sys sys32_settimeofday 2 >> 336 sys sys_getgroups 2 /* 4080 */ >> 337 sys sys_setgroups 2 >> 338 sys sys_ni_syscall 0 /* old_select */ >> 339 sys sys_symlink 2 >> 340 sys sys_ni_syscall 0 /* was sys_lstat */ >> 341 sys sys_readlink 3 /* 4085 */ >> 342 sys sys_uselib 1 >> 343 sys sys_swapon 2 >> 344 sys sys_reboot 3 >> 345 sys sys32_readdir 3 >> 346 sys old_mmap 6 /* 4090 */ >> 347 sys sys_munmap 2 >> 348 sys sys_truncate 2 >> 349 sys sys_ftruncate 2 >> 350 sys sys_fchmod 2 >> 351 sys sys_fchown 3 /* 4095 */ >> 352 sys sys_getpriority 2 >> 353 sys sys_setpriority 3 >> 354 sys sys_ni_syscall 0 >> 355 sys compat_sys_statfs 2 >> 356 sys compat_sys_fstatfs 2 /* 4100 */ >> 357 sys sys_ni_syscall 0 /* sys_ioperm */ >> 358 sys sys_socketcall 2 >> 359 sys sys_syslog 3 >> 360 sys compat_sys_setitimer 3 >> 361 sys compat_sys_getitimer 2 /* 4105 */ >> 362 sys compat_sys_newstat 2 >> 363 sys compat_sys_newlstat 2 >> 364 sys compat_sys_newfstat 2 >> 365 sys sys_uname 1 >> 366 sys sys_ni_syscall 0 /* sys_ioperm *//* 4110 */ >> 367 sys sys_vhangup 0 >> 368 sys sys_ni_syscall 0 /* was sys_idle */ >> 369 sys sys_ni_syscall 0 /* sys_vm86 */ >> 370 sys sys32_wait4 4 >> 371 sys sys_swapoff 1 /* 4115 */ >> 372 sys sys32_sysinfo 1 >> 373 sys sys32_ipc 6 >> 374 sys sys_fsync 1 >> 375 sys sys32_sigreturn 0 >> 376 sys sys_clone 0 /* 4120 */ >> 377 sys sys_setdomainname 2 >> 378 sys sys32_newuname 1 >> 379 sys sys_ni_syscall 0 /* sys_modify_ldt */ >> 380 sys sys32_adjtimex 1 >> 381 sys sys_mprotect 3 /* 4125 */ >> 382 sys compat_sys_sigprocmask 3 >> 383 sys sys_ni_syscall 0 /* was creat_module */ >> 384 sys sys_init_module 5 >> 385 sys sys_delete_module 1 >> 386 sys sys_ni_syscall 0 /* 4130, get_kernel_syms */ >> 387 sys sys_quotactl 0 >> 388 sys sys_getpgid 1 >> 389 sys sys_fchdir 1 >> 390 sys sys_bdflush 2 >> 391 sys sys_sysfs 3 /* 4135 */ >> 392 sys sys32_personality 1 >> 393 sys sys_ni_syscall 0 /* for afs_syscall */ >> 394 sys sys_setfsuid 1 >> 395 sys sys_setfsgid 1 >> 396 sys sys32_llseek 5 /* 4140 */ >> 397 sys sys32_getdents 3 >> 398 sys sys32_select 5 >> 399 sys sys_flock 2 >> 400 sys sys_msync 3 >> 401 sys sys32_readv 3 /* 4145 */ >> 402 sys sys32_writev 3 >> 403 sys sys_cacheflush 3 >> 404 sys sys_cachectl 3 >> 405 sys sys_sysmips 4 >> 406 sys sys_ni_syscall 0 /* 4150 */ >> 407 sys sys_getsid 1 >> 408 sys sys_fdatasync 0 >> 409 sys sys32_sysctl 1 >> 410 sys sys_mlock 2 >> 411 sys sys_munlock 2 /* 4155 */ >> 412 sys sys_mlockall 1 >> 413 sys sys_munlockall 0 >> 414 sys sys_sched_setparam 2 >> 415 sys sys_sched_getparam 2 >> 416 sys sys_sched_setscheduler 3 /* 4160 */ >> 417 sys sys_sched_getscheduler 1 >> 418 sys sys_sched_yield 0 >> 419 sys sys_sched_get_priority_max 1 >> 420 sys sys_sched_get_priority_min 1 >> 421 sys sys32_sched_rr_get_interval 2 /* 4165 */ >> 422 sys compat_sys_nanosleep 2 >> 423 sys sys_mremap 4 >> 424 sys sys_accept 3 >> 425 sys sys_bind 3 >> 426 sys sys_connect 3 /* 4170 */ >> 427 sys sys_getpeername 3 >> 428 sys sys_getsockname 3 >> 429 sys sys_getsockopt 5 >> 430 sys sys_listen 2 >> 431 sys sys_recv 4 /* 4175 */ >> 432 sys sys_recvfrom 6 >> 433 sys compat_sys_recvmsg 3 >> 434 sys sys_send 4 >> 435 sys compat_sys_sendmsg 3 >> 436 sys sys_sendto 6 /* 4180 */ >> 437 sys compat_sys_setsockopt 5 >> 438 sys sys_shutdown 2 >> 439 sys sys_socket 3 >> 440 sys sys_socketpair 4 >> 441 sys sys_setresuid 3 /* 4185 */ >> 442 sys sys_getresuid 3 >> 443 sys sys_ni_syscall 0 /* was query_module */ >> 444 sys sys_poll 3 >> 445 sys sys_nfsservctl 3 >> 446 sys sys_setresgid 3 /* 4190 */ >> 447 sys sys_getresgid 3 >> 448 sys sys_prctl 5 >> 449 sys sys32_rt_sigreturn 0 >> 450 sys sys32_rt_sigaction 4 >> 451 sys sys32_rt_sigprocmask 4 /* 4195 */ >> 452 sys sys32_rt_sigpending 2 >> 453 sys sys32_rt_sigtimedwait 4 >> 454 sys sys32_rt_sigqueueinfo 3 >> 455 sys sys32_rt_sigsuspend 0 >> 456 sys sys32_pread 6 /* 4200 */ >> 457 sys sys32_pwrite 6 >> 458 sys sys_chown 3 >> 459 sys sys_getcwd 2 >> 460 sys sys_capget 2 >> 461 sys sys_capset 2 /* 4205 */ >> 462 sys sys32_sigaltstack 0 >> 463 sys sys32_sendfile 4 >> 464 sys sys_ni_syscall 0 >> 465 sys sys_ni_syscall 0 >> 466 sys sys32_mmap2 6 /* 4210 */ >> 467 sys sys32_truncate64 4 >> 468 sys sys32_ftruncate64 4 >> 469 sys sys_newstat 2 >> 470 sys sys_newlstat 2 >> 471 sys sys_newfstat 2 /* 4215 */ >> 472 sys sys_pivot_root 2 >> 473 sys sys_mincore 3 >> 474 sys sys_madvise 3 >> 475 sys sys_getdents64 3 >> 476 sys compat_sys_fcntl64 3 /* 4220 */ >> 477 sys sys_ni_syscall 0 >> 478 sys sys_gettid 0 >> 479 sys sys32_readahead 5 >> 480 sys sys_setxattr 5 >> 481 sys sys_lsetxattr 5 /* 4225 */ >> 482 sys sys_fsetxattr 5 >> 483 sys sys_getxattr 4 >> 484 sys sys_lgetxattr 4 >> 485 sys sys_fgetxattr 4 >> 486 sys sys_listxattr 3 /* 4230 */ >> 487 sys sys_llistxattr 3 >> 488 sys sys_flistxattr 3 >> 489 sys sys_removexattr 2 >> 490 sys sys_lremovexattr 2 >> 491 sys sys_fremovexattr 2 /* 4235 */ >> 492 sys sys_tkill 2 >> 493 sys sys_sendfile64 5 >> 494 sys compat_sys_futex 5 >> 495 sys sys32_sched_setaffinity 3 >> 496 sys sys32_sched_getaffinity 3 /* 4240 */ >> 497 sys sys_io_setup 2 >> 498 sys sys_io_destroy 1 >> 499 sys sys_io_getevents 5 >> 500 sys sys_io_submit 3 >> 501 sys sys_io_cancel 3 /* 4245 */ >> 502 sys sys_exit_group 1 >> 503 sys sys_lookup_dcookie 3 >> 504 sys sys_epoll_create 1 >> 505 sys sys_epoll_ctl 4 >> 506 sys sys_epoll_wait 3 /* 4250 */ >> 507 sys sys_remap_file_pages 5 >> 508 sys sys_set_tid_address 1 >> 509 sys sys_restart_syscall 0 >> 510 sys sys_fadvise64 6 >> 511 sys sys_statfs64 3 /* 4255 */ >> 512 sys sys_fstatfs64 2 >> 513 sys sys_timer_create 3 >> 514 sys sys_timer_settime 4 >> 515 sys sys_timer_gettime 2 >> 516 sys sys_timer_getoverrun 1 /* 4260 */ >> 517 sys sys_timer_delete 1 >> 518 sys sys_clock_settime 2 >> 519 sys sys_clock_gettime 2 >> 520 sys sys_clock_getres 2 >> 521 sys sys_clock_nanosleep 4 /* 4265 */ >> 522 sys sys_tgkill 3 >> 523 sys compat_sys_utimes 2 >> 524 >> 525 .endm >> 526 >> 527 .macro sys function, nargs >> 528 PTR \function >> 529 .endm >> 530 219 .align 3 531 .align 3 220 .type sys32_call_table,@object !! 532 sys_call_table: 221 EXPORT(sys32_call_table) !! 533 syscalltable 222 #include <asm/syscall_table_o32.h> !! 534 >> 535 .macro sys function, nargs >> 536 .byte \nargs >> 537 .endm >> 538 >> 539 sys_narg_table: >> 540 syscalltable
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.