| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
|  | 2 | * This file is subject to the terms and conditions of the GNU General Public | 
|  | 3 | * License.  See the file "COPYING" in the main directory of this archive | 
|  | 4 | * for more details. | 
|  | 5 | * | 
|  | 6 | * Copyright (C) 1995 - 2000, 2001 by Ralf Baechle | 
|  | 7 | * Copyright (C) 1999, 2000 Silicon Graphics, Inc. | 
|  | 8 | * Copyright (C) 2001 MIPS Technologies, Inc. | 
|  | 9 | * Copyright (C) 2004 Thiemo Seufer | 
|  | 10 | * | 
|  | 11 | * Hairy, the userspace application uses a different argument passing | 
|  | 12 | * convention than the kernel, so we have to translate things from o32 | 
|  | 13 | * to ABI64 calling convention.  64-bit syscalls are also processed | 
|  | 14 | * here for now. | 
|  | 15 | */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 16 | #include <linux/errno.h> | 
|  | 17 | #include <asm/asm.h> | 
|  | 18 | #include <asm/asmmacro.h> | 
| Ralf Baechle | 192ef36 | 2006-07-07 14:07:18 +0100 | [diff] [blame] | 19 | #include <asm/irqflags.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 20 | #include <asm/mipsregs.h> | 
|  | 21 | #include <asm/regdef.h> | 
|  | 22 | #include <asm/stackframe.h> | 
|  | 23 | #include <asm/thread_info.h> | 
|  | 24 | #include <asm/unistd.h> | 
|  | 25 | #include <asm/sysmips.h> | 
|  | 26 |  | 
|  | 27 | .align  5 | 
|  | 28 | NESTED(handle_sys, PT_SIZE, sp) | 
|  | 29 | .set	noat | 
|  | 30 | SAVE_SOME | 
| Atsushi Nemoto | eae6c0d | 2006-09-26 23:43:40 +0900 | [diff] [blame] | 31 | TRACE_IRQS_ON_RELOAD | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 32 | STI | 
|  | 33 | .set	at | 
|  | 34 | ld	t1, PT_EPC(sp)		# skip syscall on return | 
|  | 35 |  | 
|  | 36 | dsubu	t0, v0, __NR_O32_Linux	# check syscall number | 
|  | 37 | sltiu	t0, t0, __NR_O32_Linux_syscalls + 1 | 
|  | 38 | daddiu	t1, 4			# skip to next instruction | 
|  | 39 | sd	t1, PT_EPC(sp) | 
|  | 40 | beqz	t0, not_o32_scall | 
|  | 41 | #if 0 | 
|  | 42 | SAVE_ALL | 
|  | 43 | move a1, v0 | 
|  | 44 | PRINT("Scall %ld\n") | 
|  | 45 | RESTORE_ALL | 
|  | 46 | #endif | 
|  | 47 |  | 
|  | 48 | /* We don't want to stumble over broken sign extensions from | 
|  | 49 | userland. O32 does never use the upper half. */ | 
|  | 50 | sll	a0, a0, 0 | 
|  | 51 | sll	a1, a1, 0 | 
|  | 52 | sll	a2, a2, 0 | 
|  | 53 | sll	a3, a3, 0 | 
|  | 54 |  | 
|  | 55 | dsll	t0, v0, 3		# offset into table | 
|  | 56 | ld	t2, (sys_call_table - (__NR_O32_Linux * 8))(t0) | 
|  | 57 |  | 
|  | 58 | sd	a3, PT_R26(sp)		# save a3 for syscall restarting | 
|  | 59 |  | 
|  | 60 | /* | 
|  | 61 | * More than four arguments.  Try to deal with it by copying the | 
|  | 62 | * stack arguments from the user stack to the kernel stack. | 
|  | 63 | * This Sucks (TM). | 
|  | 64 | * | 
|  | 65 | * We intentionally keep the kernel stack a little below the top of | 
|  | 66 | * userspace so we don't have to do a slower byte accurate check here. | 
|  | 67 | */ | 
|  | 68 | ld	t0, PT_R29(sp)		# get old user stack pointer | 
|  | 69 | daddu	t1, t0, 32 | 
|  | 70 | bltz	t1, bad_stack | 
|  | 71 |  | 
|  | 72 | 1:	lw	a4, 16(t0)		# argument #5 from usp | 
|  | 73 | 2:	lw	a5, 20(t0)		# argument #6 from usp | 
|  | 74 | 3:	lw	a6, 24(t0)		# argument #7 from usp | 
|  | 75 | 4:	lw	a7, 28(t0)		# argument #8 from usp (for indirect syscalls) | 
|  | 76 |  | 
|  | 77 | .section __ex_table,"a" | 
|  | 78 | PTR	1b, bad_stack | 
|  | 79 | PTR	2b, bad_stack | 
|  | 80 | PTR	3b, bad_stack | 
|  | 81 | PTR	4b, bad_stack | 
|  | 82 | .previous | 
|  | 83 |  | 
|  | 84 | li	t1, _TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | 
|  | 85 | LONG_L	t0, TI_FLAGS($28)	# syscall tracing enabled? | 
|  | 86 | and	t0, t1, t0 | 
|  | 87 | bnez	t0, trace_a_syscall | 
|  | 88 |  | 
|  | 89 | jalr	t2			# Do The Real Thing (TM) | 
|  | 90 |  | 
|  | 91 | li	t0, -EMAXERRNO - 1	# error? | 
|  | 92 | sltu	t0, t0, v0 | 
|  | 93 | sd	t0, PT_R7(sp)		# set error flag | 
|  | 94 | beqz	t0, 1f | 
|  | 95 |  | 
| Al Viro | 8f5a00eb | 2010-09-28 18:50:37 +0100 | [diff] [blame] | 96 | ld	t1, PT_R2(sp)		# syscall number | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 97 | dnegu	v0			# error | 
| Al Viro | 8f5a00eb | 2010-09-28 18:50:37 +0100 | [diff] [blame] | 98 | sd	t1, PT_R0(sp)		# save it for syscall restarting | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 99 | 1:	sd	v0, PT_R2(sp)		# result | 
|  | 100 |  | 
|  | 101 | o32_syscall_exit: | 
|  | 102 | local_irq_disable		# make need_resched and | 
|  | 103 | # signals dont change between | 
|  | 104 | # sampling and return | 
|  | 105 | LONG_L	a2, TI_FLAGS($28) | 
|  | 106 | li	t0, _TIF_ALLWORK_MASK | 
|  | 107 | and	t0, a2, t0 | 
|  | 108 | bnez	t0, o32_syscall_exit_work | 
|  | 109 |  | 
|  | 110 | j	restore_partial | 
|  | 111 |  | 
|  | 112 | o32_syscall_exit_work: | 
|  | 113 | j	syscall_exit_work_partial | 
|  | 114 |  | 
|  | 115 | /* ------------------------------------------------------------------------ */ | 
|  | 116 |  | 
|  | 117 | trace_a_syscall: | 
|  | 118 | SAVE_STATIC | 
|  | 119 | sd	a4, PT_R8(sp)		# Save argument registers | 
|  | 120 | sd	a5, PT_R9(sp) | 
|  | 121 | sd	a6, PT_R10(sp) | 
|  | 122 | sd	a7, PT_R11(sp)		# For indirect syscalls | 
|  | 123 |  | 
|  | 124 | move	s0, t2			# Save syscall pointer | 
|  | 125 | move	a0, sp | 
|  | 126 | li	a1, 0 | 
|  | 127 | jal	do_syscall_trace | 
|  | 128 |  | 
| Ralf Baechle | 04a7052 | 2005-11-30 16:24:57 +0000 | [diff] [blame] | 129 | move	t0, s0 | 
|  | 130 | RESTORE_STATIC | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 131 | ld	a0, PT_R4(sp)		# Restore argument registers | 
|  | 132 | ld	a1, PT_R5(sp) | 
|  | 133 | ld	a2, PT_R6(sp) | 
|  | 134 | ld	a3, PT_R7(sp) | 
|  | 135 | ld	a4, PT_R8(sp) | 
|  | 136 | ld	a5, PT_R9(sp) | 
|  | 137 | ld	a6, PT_R10(sp) | 
|  | 138 | ld	a7, PT_R11(sp)		# For indirect syscalls | 
| Ralf Baechle | 04a7052 | 2005-11-30 16:24:57 +0000 | [diff] [blame] | 139 | jalr	t0 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 140 |  | 
|  | 141 | li	t0, -EMAXERRNO - 1	# error? | 
|  | 142 | sltu	t0, t0, v0 | 
|  | 143 | sd	t0, PT_R7(sp)		# set error flag | 
|  | 144 | beqz	t0, 1f | 
|  | 145 |  | 
| Al Viro | 8f5a00eb | 2010-09-28 18:50:37 +0100 | [diff] [blame] | 146 | ld	t1, PT_R2(sp)		# syscall number | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 147 | dnegu	v0			# error | 
| Al Viro | 8f5a00eb | 2010-09-28 18:50:37 +0100 | [diff] [blame] | 148 | sd	t1, PT_R0(sp)		# save it for syscall restarting | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 149 | 1:	sd	v0, PT_R2(sp)		# result | 
|  | 150 |  | 
|  | 151 | j	syscall_exit | 
|  | 152 |  | 
|  | 153 | /* ------------------------------------------------------------------------ */ | 
|  | 154 |  | 
|  | 155 | /* | 
|  | 156 | * The stackpointer for a call with more than 4 arguments is bad. | 
|  | 157 | */ | 
|  | 158 | bad_stack: | 
| Al Viro | 5b89c00 | 2010-09-28 18:50:47 +0100 | [diff] [blame] | 159 | li	v0, EFAULT | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 160 | sd	v0, PT_R2(sp) | 
|  | 161 | li	t0, 1			# set error flag | 
|  | 162 | sd	t0, PT_R7(sp) | 
|  | 163 | j	o32_syscall_exit | 
|  | 164 |  | 
|  | 165 | not_o32_scall: | 
|  | 166 | /* | 
|  | 167 | * This is not an o32 compatibility syscall, pass it on | 
|  | 168 | * to the 64-bit syscall handlers. | 
|  | 169 | */ | 
|  | 170 | #ifdef CONFIG_MIPS32_N32 | 
|  | 171 | j	handle_sysn32 | 
|  | 172 | #else | 
|  | 173 | j	handle_sys64 | 
|  | 174 | #endif | 
|  | 175 | END(handle_sys) | 
|  | 176 |  | 
|  | 177 | LEAF(sys32_syscall) | 
| Vlad Malov | e807f95 | 2008-11-18 15:05:46 -0800 | [diff] [blame] | 178 | subu	t0, a0, __NR_O32_Linux	# check syscall number | 
|  | 179 | sltiu	v0, t0, __NR_O32_Linux_syscalls + 1 | 
|  | 180 | beqz	t0, einval		# do not recurse | 
|  | 181 | dsll	t1, t0, 3 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 182 | beqz	v0, einval | 
| Vlad Malov | e807f95 | 2008-11-18 15:05:46 -0800 | [diff] [blame] | 183 | ld	t2, sys_call_table(t1)		# syscall routine | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 184 |  | 
|  | 185 | move	a0, a1			# shift argument registers | 
|  | 186 | move	a1, a2 | 
|  | 187 | move	a2, a3 | 
|  | 188 | move	a3, a4 | 
|  | 189 | move	a4, a5 | 
|  | 190 | move	a5, a6 | 
|  | 191 | move	a6, a7 | 
|  | 192 | sd	a0, PT_R4(sp)		# ... and push back a0 - a3, some | 
|  | 193 | sd	a1, PT_R5(sp)		# syscalls expect them there | 
|  | 194 | sd	a2, PT_R6(sp) | 
|  | 195 | sd	a3, PT_R7(sp) | 
|  | 196 | sd	a3, PT_R26(sp)		# update a3 for syscall restarting | 
|  | 197 | jr	t2 | 
|  | 198 | /* Unreached */ | 
|  | 199 |  | 
| David Daney | c6cb4df | 2008-10-31 11:23:09 -0700 | [diff] [blame] | 200 | einval:	li	v0, -ENOSYS | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 201 | jr	ra | 
|  | 202 | END(sys32_syscall) | 
|  | 203 |  | 
|  | 204 | .align	3 | 
|  | 205 | .type	sys_call_table,@object | 
|  | 206 | sys_call_table: | 
|  | 207 | PTR	sys32_syscall			/* 4000 */ | 
|  | 208 | PTR	sys_exit | 
|  | 209 | PTR	sys_fork | 
|  | 210 | PTR	sys_read | 
|  | 211 | PTR	sys_write | 
| Thiemo Seufer | 7155262 | 2006-05-28 15:02:53 +0100 | [diff] [blame] | 212 | PTR	compat_sys_open			/* 4005 */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 213 | PTR	sys_close | 
|  | 214 | PTR	sys_waitpid | 
|  | 215 | PTR	sys_creat | 
|  | 216 | PTR	sys_link | 
|  | 217 | PTR	sys_unlink			/* 4010 */ | 
|  | 218 | PTR	sys32_execve | 
|  | 219 | PTR	sys_chdir | 
|  | 220 | PTR	compat_sys_time | 
|  | 221 | PTR	sys_mknod | 
|  | 222 | PTR	sys_chmod			/* 4015 */ | 
|  | 223 | PTR	sys_lchown | 
|  | 224 | PTR	sys_ni_syscall | 
|  | 225 | PTR	sys_ni_syscall			/* was sys_stat */ | 
|  | 226 | PTR	sys_lseek | 
|  | 227 | PTR	sys_getpid			/* 4020 */ | 
| Ralf Baechle | 089c7e7 | 2006-10-16 16:49:37 +0100 | [diff] [blame] | 228 | PTR	compat_sys_mount | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 229 | PTR	sys_oldumount | 
|  | 230 | PTR	sys_setuid | 
|  | 231 | PTR	sys_getuid | 
|  | 232 | PTR	compat_sys_stime		/* 4025 */ | 
| Thomas Bogendoerfer | 5d9a76c | 2008-08-17 16:49:25 +0200 | [diff] [blame] | 233 | PTR	compat_sys_ptrace | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 234 | PTR	sys_alarm | 
|  | 235 | PTR	sys_ni_syscall			/* was sys_fstat */ | 
|  | 236 | PTR	sys_pause | 
|  | 237 | PTR	compat_sys_utime		/* 4030 */ | 
|  | 238 | PTR	sys_ni_syscall | 
|  | 239 | PTR	sys_ni_syscall | 
|  | 240 | PTR	sys_access | 
|  | 241 | PTR	sys_nice | 
|  | 242 | PTR	sys_ni_syscall			/* 4035 */ | 
|  | 243 | PTR	sys_sync | 
|  | 244 | PTR	sys_kill | 
|  | 245 | PTR	sys_rename | 
|  | 246 | PTR	sys_mkdir | 
|  | 247 | PTR	sys_rmdir			/* 4040 */ | 
|  | 248 | PTR	sys_dup | 
| Ralf Baechle | 8213bbf | 2008-07-20 13:16:46 +0100 | [diff] [blame] | 249 | PTR	sysm_pipe | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 250 | PTR	compat_sys_times | 
|  | 251 | PTR	sys_ni_syscall | 
|  | 252 | PTR	sys_brk				/* 4045 */ | 
|  | 253 | PTR	sys_setgid | 
|  | 254 | PTR	sys_getgid | 
|  | 255 | PTR	sys_ni_syscall			/* was signal	2 */ | 
|  | 256 | PTR	sys_geteuid | 
|  | 257 | PTR	sys_getegid			/* 4050 */ | 
|  | 258 | PTR	sys_acct | 
|  | 259 | PTR	sys_umount | 
|  | 260 | PTR	sys_ni_syscall | 
|  | 261 | PTR	compat_sys_ioctl | 
|  | 262 | PTR	compat_sys_fcntl		/* 4055 */ | 
|  | 263 | PTR	sys_ni_syscall | 
|  | 264 | PTR	sys_setpgid | 
|  | 265 | PTR	sys_ni_syscall | 
|  | 266 | PTR	sys_olduname | 
|  | 267 | PTR	sys_umask			/* 4060 */ | 
|  | 268 | PTR	sys_chroot | 
| Christoph Hellwig | 2b1c6bd | 2008-11-28 10:09:09 +0100 | [diff] [blame] | 269 | PTR	compat_sys_ustat | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 270 | PTR	sys_dup2 | 
|  | 271 | PTR	sys_getppid | 
|  | 272 | PTR	sys_getpgrp			/* 4065 */ | 
|  | 273 | PTR	sys_setsid | 
| Ralf Baechle | dbda6ac | 2009-02-08 16:00:26 +0000 | [diff] [blame] | 274 | PTR	sys_32_sigaction | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 275 | PTR	sys_sgetmask | 
|  | 276 | PTR	sys_ssetmask | 
|  | 277 | PTR	sys_setreuid			/* 4070 */ | 
|  | 278 | PTR	sys_setregid | 
|  | 279 | PTR	sys32_sigsuspend | 
|  | 280 | PTR	compat_sys_sigpending | 
|  | 281 | PTR	sys_sethostname | 
|  | 282 | PTR	compat_sys_setrlimit		/* 4075 */ | 
|  | 283 | PTR	compat_sys_getrlimit | 
|  | 284 | PTR	compat_sys_getrusage | 
| Christoph Hellwig | b418da1 | 2008-10-15 22:02:06 -0700 | [diff] [blame] | 285 | PTR	compat_sys_gettimeofday | 
|  | 286 | PTR	compat_sys_settimeofday | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 287 | PTR	sys_getgroups			/* 4080 */ | 
|  | 288 | PTR	sys_setgroups | 
|  | 289 | PTR	sys_ni_syscall			/* old_select */ | 
|  | 290 | PTR	sys_symlink | 
|  | 291 | PTR	sys_ni_syscall			/* was sys_lstat */ | 
|  | 292 | PTR	sys_readlink			/* 4085 */ | 
|  | 293 | PTR	sys_uselib | 
|  | 294 | PTR	sys_swapon | 
|  | 295 | PTR	sys_reboot | 
| Atsushi Nemoto | 2fd628f | 2006-02-21 15:59:00 +0900 | [diff] [blame] | 296 | PTR	compat_sys_old_readdir | 
| Ralf Baechle | dbda6ac | 2009-02-08 16:00:26 +0000 | [diff] [blame] | 297 | PTR	sys_mips_mmap			/* 4090 */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 298 | PTR	sys_munmap | 
|  | 299 | PTR	sys_truncate | 
|  | 300 | PTR	sys_ftruncate | 
|  | 301 | PTR	sys_fchmod | 
|  | 302 | PTR	sys_fchown			/* 4095 */ | 
|  | 303 | PTR	sys_getpriority | 
|  | 304 | PTR	sys_setpriority | 
|  | 305 | PTR	sys_ni_syscall | 
|  | 306 | PTR	compat_sys_statfs | 
|  | 307 | PTR	compat_sys_fstatfs		/* 4100 */ | 
|  | 308 | PTR	sys_ni_syscall			/* sys_ioperm */ | 
| Ralf Baechle | 08274ce | 2007-02-27 01:11:28 +0000 | [diff] [blame] | 309 | PTR	compat_sys_socketcall | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 310 | PTR	sys_syslog | 
|  | 311 | PTR	compat_sys_setitimer | 
|  | 312 | PTR	compat_sys_getitimer		/* 4105 */ | 
|  | 313 | PTR	compat_sys_newstat | 
|  | 314 | PTR	compat_sys_newlstat | 
|  | 315 | PTR	compat_sys_newfstat | 
|  | 316 | PTR	sys_uname | 
|  | 317 | PTR	sys_ni_syscall			/* sys_ioperm  *//* 4110 */ | 
|  | 318 | PTR	sys_vhangup | 
|  | 319 | PTR	sys_ni_syscall			/* was sys_idle	 */ | 
|  | 320 | PTR	sys_ni_syscall			/* sys_vm86 */ | 
| Ralf Baechle | b6e203d | 2005-02-16 21:18:52 +0000 | [diff] [blame] | 321 | PTR	compat_sys_wait4 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 322 | PTR	sys_swapoff			/* 4115 */ | 
| Kyle McMartin | d4d23ad | 2007-02-10 01:46:00 -0800 | [diff] [blame] | 323 | PTR	compat_sys_sysinfo | 
| Ralf Baechle | dbda6ac | 2009-02-08 16:00:26 +0000 | [diff] [blame] | 324 | PTR	sys_32_ipc | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 325 | PTR	sys_fsync | 
|  | 326 | PTR	sys32_sigreturn | 
| Ralf Baechle | 3c37026 | 2005-04-13 17:43:59 +0000 | [diff] [blame] | 327 | PTR	sys32_clone			/* 4120 */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 328 | PTR	sys_setdomainname | 
| Christoph Hellwig | e28cbf2 | 2010-03-10 15:21:19 -0800 | [diff] [blame] | 329 | PTR	sys_newuname | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 330 | PTR	sys_ni_syscall			/* sys_modify_ldt */ | 
| Stephen Rothwell | 3158e94 | 2006-03-26 01:37:29 -0800 | [diff] [blame] | 331 | PTR	compat_sys_adjtimex | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 332 | PTR	sys_mprotect			/* 4125 */ | 
|  | 333 | PTR	compat_sys_sigprocmask | 
|  | 334 | PTR	sys_ni_syscall			/* was creat_module */ | 
|  | 335 | PTR	sys_init_module | 
|  | 336 | PTR	sys_delete_module | 
|  | 337 | PTR	sys_ni_syscall			/* 4130, get_kernel_syms */ | 
|  | 338 | PTR	sys_quotactl | 
|  | 339 | PTR	sys_getpgid | 
|  | 340 | PTR	sys_fchdir | 
|  | 341 | PTR	sys_bdflush | 
|  | 342 | PTR	sys_sysfs			/* 4135 */ | 
| Ralf Baechle | dbda6ac | 2009-02-08 16:00:26 +0000 | [diff] [blame] | 343 | PTR	sys_32_personality | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 344 | PTR	sys_ni_syscall	 		/* for afs_syscall */ | 
|  | 345 | PTR	sys_setfsuid | 
|  | 346 | PTR	sys_setfsgid | 
| Ralf Baechle | dbda6ac | 2009-02-08 16:00:26 +0000 | [diff] [blame] | 347 | PTR	sys_32_llseek			/* 4140 */ | 
| Atsushi Nemoto | 2fd628f | 2006-02-21 15:59:00 +0900 | [diff] [blame] | 348 | PTR	compat_sys_getdents | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 349 | PTR	compat_sys_select | 
|  | 350 | PTR	sys_flock | 
|  | 351 | PTR	sys_msync | 
|  | 352 | PTR	compat_sys_readv		/* 4145 */ | 
|  | 353 | PTR	compat_sys_writev | 
|  | 354 | PTR	sys_cacheflush | 
|  | 355 | PTR	sys_cachectl | 
|  | 356 | PTR	sys_sysmips | 
|  | 357 | PTR	sys_ni_syscall			/* 4150 */ | 
|  | 358 | PTR	sys_getsid | 
|  | 359 | PTR	sys_fdatasync | 
| Eric W. Biederman | aff639c | 2009-04-03 00:46:47 -0700 | [diff] [blame] | 360 | PTR	compat_sys_sysctl | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 361 | PTR	sys_mlock | 
|  | 362 | PTR	sys_munlock			/* 4155 */ | 
|  | 363 | PTR	sys_mlockall | 
|  | 364 | PTR	sys_munlockall | 
|  | 365 | PTR	sys_sched_setparam | 
|  | 366 | PTR	sys_sched_getparam | 
|  | 367 | PTR	sys_sched_setscheduler 		/* 4160 */ | 
|  | 368 | PTR	sys_sched_getscheduler | 
|  | 369 | PTR	sys_sched_yield | 
|  | 370 | PTR	sys_sched_get_priority_max | 
|  | 371 | PTR	sys_sched_get_priority_min | 
| Ralf Baechle | dbda6ac | 2009-02-08 16:00:26 +0000 | [diff] [blame] | 372 | PTR	sys_32_sched_rr_get_interval 	/* 4165 */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 373 | PTR	compat_sys_nanosleep | 
|  | 374 | PTR	sys_mremap | 
|  | 375 | PTR	sys_accept | 
|  | 376 | PTR	sys_bind | 
|  | 377 | PTR	sys_connect			/* 4170 */ | 
|  | 378 | PTR	sys_getpeername | 
|  | 379 | PTR	sys_getsockname | 
|  | 380 | PTR	sys_getsockopt | 
|  | 381 | PTR	sys_listen | 
| Johannes Berg | 1dacc76 | 2009-07-01 11:26:02 +0000 | [diff] [blame] | 382 | PTR	compat_sys_recv			/* 4175 */ | 
|  | 383 | PTR	compat_sys_recvfrom | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 384 | PTR	compat_sys_recvmsg | 
|  | 385 | PTR	sys_send | 
|  | 386 | PTR	compat_sys_sendmsg | 
|  | 387 | PTR	sys_sendto			/* 4180 */ | 
|  | 388 | PTR	compat_sys_setsockopt | 
|  | 389 | PTR	sys_shutdown | 
|  | 390 | PTR	sys_socket | 
|  | 391 | PTR	sys_socketpair | 
|  | 392 | PTR	sys_setresuid			/* 4185 */ | 
|  | 393 | PTR	sys_getresuid | 
|  | 394 | PTR	sys_ni_syscall			/* was query_module */ | 
|  | 395 | PTR	sys_poll | 
| Maciej W. Rozycki | d547c5c | 2005-05-06 16:28:55 +0000 | [diff] [blame] | 396 | PTR	compat_sys_nfsservctl | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 397 | PTR	sys_setresgid			/* 4190 */ | 
|  | 398 | PTR	sys_getresgid | 
|  | 399 | PTR	sys_prctl | 
|  | 400 | PTR	sys32_rt_sigreturn | 
| Ralf Baechle | dbda6ac | 2009-02-08 16:00:26 +0000 | [diff] [blame] | 401 | PTR	sys_32_rt_sigaction | 
|  | 402 | PTR	sys_32_rt_sigprocmask 		/* 4195 */ | 
|  | 403 | PTR	sys_32_rt_sigpending | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 404 | PTR	compat_sys_rt_sigtimedwait | 
| Ralf Baechle | dbda6ac | 2009-02-08 16:00:26 +0000 | [diff] [blame] | 405 | PTR	sys_32_rt_sigqueueinfo | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 406 | PTR	sys32_rt_sigsuspend | 
| Ralf Baechle | dbda6ac | 2009-02-08 16:00:26 +0000 | [diff] [blame] | 407 | PTR	sys_32_pread			/* 4200 */ | 
|  | 408 | PTR	sys_32_pwrite | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 409 | PTR	sys_chown | 
|  | 410 | PTR	sys_getcwd | 
|  | 411 | PTR	sys_capget | 
|  | 412 | PTR	sys_capset			/* 4205 */ | 
|  | 413 | PTR	sys32_sigaltstack | 
| Ralf Baechle | dbda6ac | 2009-02-08 16:00:26 +0000 | [diff] [blame] | 414 | PTR	sys_32_sendfile | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 415 | PTR	sys_ni_syscall | 
|  | 416 | PTR	sys_ni_syscall | 
| Ralf Baechle | dbda6ac | 2009-02-08 16:00:26 +0000 | [diff] [blame] | 417 | PTR	sys_mips_mmap2			/* 4210 */ | 
|  | 418 | PTR	sys_32_truncate64 | 
|  | 419 | PTR	sys_32_ftruncate64 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 420 | PTR	sys_newstat | 
|  | 421 | PTR	sys_newlstat | 
|  | 422 | PTR	sys_newfstat			/* 4215 */ | 
|  | 423 | PTR	sys_pivot_root | 
|  | 424 | PTR	sys_mincore | 
|  | 425 | PTR	sys_madvise | 
|  | 426 | PTR	sys_getdents64 | 
|  | 427 | PTR	compat_sys_fcntl64		/* 4220 */ | 
|  | 428 | PTR	sys_ni_syscall | 
|  | 429 | PTR	sys_gettid | 
|  | 430 | PTR	sys32_readahead | 
|  | 431 | PTR	sys_setxattr | 
|  | 432 | PTR	sys_lsetxattr			/* 4225 */ | 
|  | 433 | PTR	sys_fsetxattr | 
|  | 434 | PTR	sys_getxattr | 
|  | 435 | PTR	sys_lgetxattr | 
|  | 436 | PTR	sys_fgetxattr | 
|  | 437 | PTR	sys_listxattr			/* 4230 */ | 
|  | 438 | PTR	sys_llistxattr | 
|  | 439 | PTR	sys_flistxattr | 
|  | 440 | PTR	sys_removexattr | 
|  | 441 | PTR	sys_lremovexattr | 
|  | 442 | PTR	sys_fremovexattr		/* 4235 */ | 
|  | 443 | PTR	sys_tkill | 
|  | 444 | PTR	sys_sendfile64 | 
|  | 445 | PTR	compat_sys_futex | 
|  | 446 | PTR	compat_sys_sched_setaffinity | 
|  | 447 | PTR	compat_sys_sched_getaffinity	/* 4240 */ | 
| Michel Thebeau | e2cc502 | 2010-09-28 14:15:37 -0400 | [diff] [blame] | 448 | PTR	compat_sys_io_setup | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 449 | PTR	sys_io_destroy | 
| Michel Thebeau | e2cc502 | 2010-09-28 14:15:37 -0400 | [diff] [blame] | 450 | PTR	compat_sys_io_getevents | 
|  | 451 | PTR	compat_sys_io_submit | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 452 | PTR	sys_io_cancel			/* 4245 */ | 
|  | 453 | PTR	sys_exit_group | 
| Wu Zhangjin | 80b8585 | 2009-10-10 19:19:49 +0800 | [diff] [blame] | 454 | PTR	sys32_lookup_dcookie | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 455 | PTR	sys_epoll_create | 
|  | 456 | PTR	sys_epoll_ctl | 
|  | 457 | PTR	sys_epoll_wait			/* 4250 */ | 
|  | 458 | PTR	sys_remap_file_pages | 
|  | 459 | PTR	sys_set_tid_address | 
|  | 460 | PTR	sys_restart_syscall | 
| Atsushi Nemoto | 8676d2e | 2007-05-18 00:46:13 +0900 | [diff] [blame] | 461 | PTR	sys32_fadvise64_64 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 462 | PTR	compat_sys_statfs64		/* 4255 */ | 
|  | 463 | PTR	compat_sys_fstatfs64 | 
| Ralf Baechle | 821d313 | 2007-02-27 01:21:17 +0000 | [diff] [blame] | 464 | PTR	compat_sys_timer_create | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 465 | PTR	compat_sys_timer_settime | 
|  | 466 | PTR	compat_sys_timer_gettime | 
|  | 467 | PTR	sys_timer_getoverrun		/* 4260 */ | 
|  | 468 | PTR	sys_timer_delete | 
|  | 469 | PTR	compat_sys_clock_settime | 
|  | 470 | PTR	compat_sys_clock_gettime | 
|  | 471 | PTR	compat_sys_clock_getres | 
|  | 472 | PTR	compat_sys_clock_nanosleep	/* 4265 */ | 
|  | 473 | PTR	sys_tgkill | 
|  | 474 | PTR	compat_sys_utimes | 
|  | 475 | PTR	sys_ni_syscall			/* sys_mbind */ | 
|  | 476 | PTR	sys_ni_syscall			/* sys_get_mempolicy */ | 
|  | 477 | PTR	sys_ni_syscall			/* 4270 sys_set_mempolicy */ | 
|  | 478 | PTR	compat_sys_mq_open | 
|  | 479 | PTR	sys_mq_unlink | 
|  | 480 | PTR	compat_sys_mq_timedsend | 
|  | 481 | PTR	compat_sys_mq_timedreceive | 
|  | 482 | PTR	compat_sys_mq_notify		/* 4275 */ | 
|  | 483 | PTR	compat_sys_mq_getsetattr | 
|  | 484 | PTR	sys_ni_syscall			/* sys_vserver */ | 
| Ralf Baechle | dbda6ac | 2009-02-08 16:00:26 +0000 | [diff] [blame] | 485 | PTR	sys_32_waitid | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 486 | PTR	sys_ni_syscall			/* available, was setaltroot */ | 
|  | 487 | PTR	sys_add_key			/* 4280 */ | 
|  | 488 | PTR	sys_request_key | 
|  | 489 | PTR	sys_keyctl | 
| Ralf Baechle | 3c37026 | 2005-04-13 17:43:59 +0000 | [diff] [blame] | 490 | PTR	sys_set_thread_area | 
| Ralf Baechle | 7db36c8 | 2005-07-13 11:48:45 +0000 | [diff] [blame] | 491 | PTR	sys_inotify_init | 
|  | 492 | PTR	sys_inotify_add_watch		/* 4285 */ | 
|  | 493 | PTR	sys_inotify_rm_watch | 
| Ralf Baechle | 72bf891 | 2006-02-08 13:38:50 +0000 | [diff] [blame] | 494 | PTR	sys_migrate_pages | 
|  | 495 | PTR	compat_sys_openat | 
|  | 496 | PTR	sys_mkdirat | 
|  | 497 | PTR	sys_mknodat			/* 4290 */ | 
|  | 498 | PTR	sys_fchownat | 
|  | 499 | PTR	compat_sys_futimesat | 
| Richard Sandiford | 63415db | 2006-09-17 20:30:46 +0100 | [diff] [blame] | 500 | PTR	sys_newfstatat | 
| Ralf Baechle | 72bf891 | 2006-02-08 13:38:50 +0000 | [diff] [blame] | 501 | PTR	sys_unlinkat | 
|  | 502 | PTR	sys_renameat			/* 4295 */ | 
|  | 503 | PTR	sys_linkat | 
|  | 504 | PTR	sys_symlinkat | 
|  | 505 | PTR	sys_readlinkat | 
|  | 506 | PTR	sys_fchmodat | 
|  | 507 | PTR	sys_faccessat			/* 4300 */ | 
| Joseph S. Myers | 99d233f | 2007-01-10 12:30:50 +0000 | [diff] [blame] | 508 | PTR	compat_sys_pselect6 | 
| Arnaud Patard | 049a31a | 2009-10-20 10:27:47 +0200 | [diff] [blame] | 509 | PTR	compat_sys_ppoll | 
| Ralf Baechle | 72bf891 | 2006-02-08 13:38:50 +0000 | [diff] [blame] | 510 | PTR	sys_unshare | 
| Ralf Baechle | f115da9 | 2006-03-31 09:27:20 +0100 | [diff] [blame] | 511 | PTR	sys_splice | 
| Ralf Baechle | a8d587a | 2006-04-01 07:49:21 +0100 | [diff] [blame] | 512 | PTR	sys32_sync_file_range		/* 4305 */ | 
| Ralf Baechle | 136d47d | 2006-04-15 11:16:19 +0200 | [diff] [blame] | 513 | PTR	sys_tee | 
| Ralf Baechle | 8d13cb2 | 2008-12-03 17:03:27 +0000 | [diff] [blame] | 514 | PTR	compat_sys_vmsplice | 
| Ralf Baechle | 722cfd9 | 2006-07-02 16:31:14 +0100 | [diff] [blame] | 515 | PTR	compat_sys_move_pages | 
| Atsushi Nemoto | 7fdeb04 | 2006-09-06 22:42:02 +0900 | [diff] [blame] | 516 | PTR	compat_sys_set_robust_list | 
|  | 517 | PTR	compat_sys_get_robust_list	/* 4310 */ | 
| Nicolas Schichan | 583bb86 | 2006-10-18 15:14:55 +0200 | [diff] [blame] | 518 | PTR	compat_sys_kexec_load | 
| Ralf Baechle | 991ea26 | 2006-10-29 21:07:40 +0000 | [diff] [blame] | 519 | PTR	sys_getcpu | 
| Ralf Baechle | e016c38 | 2007-02-24 21:15:11 +0000 | [diff] [blame] | 520 | PTR	compat_sys_epoll_pwait | 
| Ralf Baechle | 08253b3 | 2007-03-06 17:04:49 +0000 | [diff] [blame] | 521 | PTR	sys_ioprio_set | 
|  | 522 | PTR	sys_ioprio_get			/* 4315 */ | 
| Atsushi Nemoto | 7a6d4f3 | 2007-05-29 23:29:40 +0900 | [diff] [blame] | 523 | PTR	compat_sys_utimensat | 
|  | 524 | PTR	compat_sys_signalfd | 
| Davide Libenzi | 4d672e7 | 2008-02-04 22:27:26 -0800 | [diff] [blame] | 525 | PTR	sys_ni_syscall | 
| Atsushi Nemoto | 7a6d4f3 | 2007-05-29 23:29:40 +0900 | [diff] [blame] | 526 | PTR	sys_eventfd | 
| Kyle McMartin | 422efb1 | 2007-09-28 13:15:20 -0400 | [diff] [blame] | 527 | PTR	sys32_fallocate			/* 4320 */ | 
| Dmitri Vorobiev | 6783fe6 | 2008-02-19 00:02:37 +0300 | [diff] [blame] | 528 | PTR	sys_timerfd_create | 
| David Daney | c7d1673 | 2009-04-16 09:20:17 -0700 | [diff] [blame] | 529 | PTR	compat_sys_timerfd_gettime | 
|  | 530 | PTR	compat_sys_timerfd_settime | 
| Ralf Baechle | 3885b71 | 2008-07-31 11:16:43 +0100 | [diff] [blame] | 531 | PTR	compat_sys_signalfd4 | 
|  | 532 | PTR	sys_eventfd2			/* 4325 */ | 
|  | 533 | PTR	sys_epoll_create1 | 
|  | 534 | PTR	sys_dup3 | 
|  | 535 | PTR	sys_pipe2 | 
|  | 536 | PTR	sys_inotify_init1 | 
| Ralf Baechle | ddd9e91 | 2009-04-02 16:59:24 -0700 | [diff] [blame] | 537 | PTR	compat_sys_preadv		/* 4330 */ | 
|  | 538 | PTR	compat_sys_pwritev | 
| David Daney | 69f16c9 | 2009-06-26 09:53:57 -0700 | [diff] [blame] | 539 | PTR	compat_sys_rt_tgsigqueueinfo | 
| Ingo Molnar | cdd6c48 | 2009-09-21 12:02:48 +0200 | [diff] [blame] | 540 | PTR	sys_perf_event_open | 
| Ralf Baechle | 54822de | 2009-08-03 17:27:19 +0100 | [diff] [blame] | 541 | PTR	sys_accept4 | 
| David Daney | 5e844b3 | 2010-08-23 14:10:37 -0700 | [diff] [blame] | 542 | PTR	compat_sys_recvmmsg		/* 4335 */ | 
|  | 543 | PTR	sys_fanotify_init | 
|  | 544 | PTR	sys_32_fanotify_mark | 
|  | 545 | PTR	sys_prlimit64 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 546 | .size	sys_call_table,.-sys_call_table |