1 /* 1 /* 2 * This file is subject to the terms and condi !! 2 * linux/arch/i386/entry.S 3 * License. See the file "COPYING" in the mai !! 3 * 4 * for more details. !! 4 * Copyright (C) 1991, 1992 Linus Torvalds 5 * << 6 * Copyright (C) 1994 - 2000, 2001, 2003 Ralf << 7 * Copyright (C) 1999, 2000 Silicon Graphics, << 8 * Copyright (C) 2001 MIPS Technologies, Inc. << 9 */ 5 */ 10 6 11 #include <asm/asm.h> << 12 #include <asm/asmmacro.h> << 13 #include <asm/compiler.h> << 14 #include <asm/irqflags.h> << 15 #include <asm/regdef.h> << 16 #include <asm/mipsregs.h> << 17 #include <asm/stackframe.h> << 18 #include <asm/isadep.h> << 19 #include <asm/thread_info.h> << 20 << 21 #ifndef CONFIG_PREEMPTION << 22 #define resume_kernel restore_all << 23 #else << 24 #define __ret_from_irq ret_from_exception << 25 #endif << 26 << 27 .text << 28 .align 5 << 29 #ifndef CONFIG_PREEMPTION << 30 FEXPORT(ret_from_exception) << 31 local_irq_disable << 32 b __ret_from_irq << 33 #endif << 34 FEXPORT(ret_from_irq) << 35 LONG_S s0, TI_REGS($28) << 36 FEXPORT(__ret_from_irq) << 37 /* 7 /* 38 * We can be coming here from a syscall done i !! 8 * entry.S contains the system-call and fault low-level handling routines. 39 * e.g. a failed kernel_execve(). !! 9 * This also contains the timer-interrupt handler, as well as all interrupts >> 10 * and faults that can result in a task-switch. >> 11 * >> 12 * NOTE: This code handles signal-recognition, which happens every time >> 13 * after a timer-interrupt and after each system call. >> 14 * >> 15 * I changed all the .align's to 4 (16 byte alignment), as that's faster >> 16 * on a 486. >> 17 * >> 18 * Stack layout in 'ret_from_system_call': >> 19 * ptrace needs to have all regs on the stack. >> 20 * if the order here is changed, it needs to be >> 21 * updated in fork.c:copy_process, signal.c:do_signal, >> 22 * ptrace.c and ptrace.h >> 23 * >> 24 * 0(%esp) - %ebx >> 25 * 4(%esp) - %ecx >> 26 * 8(%esp) - %edx >> 27 * C(%esp) - %esi >> 28 * 10(%esp) - %edi >> 29 * 14(%esp) - %ebp >> 30 * 18(%esp) - %eax >> 31 * 1C(%esp) - %ds >> 32 * 20(%esp) - %es >> 33 * 24(%esp) - orig_eax >> 34 * 28(%esp) - %eip >> 35 * 2C(%esp) - %cs >> 36 * 30(%esp) - %eflags >> 37 * 34(%esp) - %oldesp >> 38 * 38(%esp) - %oldss >> 39 * >> 40 * "current" is in register %ebx during any slow entries. 40 */ 41 */ 41 resume_userspace_check: << 42 LONG_L t0, PT_STATUS(sp) << 43 andi t0, t0, KU_USER << 44 beqz t0, resume_kernel << 45 << 46 resume_userspace: << 47 local_irq_disable # make << 48 # inte << 49 # betw << 50 LONG_L a2, TI_FLAGS($28) # curr << 51 andi t0, a2, _TIF_WORK_MASK # (ign << 52 bnez t0, work_pending << 53 j restore_all << 54 << 55 #ifdef CONFIG_PREEMPTION << 56 resume_kernel: << 57 local_irq_disable << 58 lw t0, TI_PRE_COUNT($28) << 59 bnez t0, restore_all << 60 LONG_L t0, TI_FLAGS($28) << 61 andi t1, t0, _TIF_NEED_RESCHED << 62 beqz t1, restore_all << 63 LONG_L t0, PT_STATUS(sp) << 64 andi t0, 1 << 65 beqz t0, restore_all << 66 PTR_LA ra, restore_all << 67 j preempt_schedule_irq << 68 #endif << 69 << 70 FEXPORT(ret_from_kernel_thread) << 71 jal schedule_tail # a0 = << 72 move a0, s1 << 73 jal s0 << 74 j syscall_exit << 75 << 76 FEXPORT(ret_from_fork) << 77 jal schedule_tail # a0 = << 78 << 79 FEXPORT(syscall_exit) << 80 #ifdef CONFIG_DEBUG_RSEQ << 81 move a0, sp << 82 jal rseq_syscall << 83 #endif << 84 local_irq_disable # make << 85 # sign << 86 # samp << 87 LONG_L a2, TI_FLAGS($28) # curr << 88 li t0, _TIF_ALLWORK_MASK << 89 and t0, a2, t0 << 90 bnez t0, syscall_exit_work << 91 << 92 restore_all: # rest << 93 .set noat << 94 RESTORE_TEMP << 95 RESTORE_AT << 96 RESTORE_STATIC << 97 restore_partial: # restore part << 98 #ifdef CONFIG_TRACE_IRQFLAGS << 99 SAVE_STATIC << 100 SAVE_AT << 101 SAVE_TEMP << 102 LONG_L v0, PT_STATUS(sp) << 103 #if defined(CONFIG_CPU_R3000) << 104 and v0, ST0_IEP << 105 #else << 106 and v0, ST0_IE << 107 #endif << 108 beqz v0, 1f << 109 jal trace_hardirqs_on << 110 b 2f << 111 1: jal trace_hardirqs_off << 112 2: << 113 RESTORE_TEMP << 114 RESTORE_AT << 115 RESTORE_STATIC << 116 #endif << 117 RESTORE_SOME << 118 RESTORE_SP_AND_RET << 119 .set at << 120 << 121 work_pending: << 122 andi t0, a2, _TIF_NEED_RESCHED # a2 << 123 beqz t0, work_notifysig << 124 work_resched: << 125 TRACE_IRQS_OFF << 126 jal schedule << 127 << 128 local_irq_disable # make << 129 # sign << 130 # samp << 131 LONG_L a2, TI_FLAGS($28) << 132 andi t0, a2, _TIF_WORK_MASK # is t << 133 # othe << 134 beqz t0, restore_all << 135 andi t0, a2, _TIF_NEED_RESCHED << 136 bnez t0, work_resched << 137 << 138 work_notifysig: # deal << 139 # noti << 140 move a0, sp << 141 li a1, 0 << 142 jal do_notify_resume # a2 a << 143 j resume_userspace_check << 144 << 145 FEXPORT(syscall_exit_partial) << 146 #ifdef CONFIG_DEBUG_RSEQ << 147 move a0, sp << 148 jal rseq_syscall << 149 #endif << 150 local_irq_disable # make << 151 # chan << 152 LONG_L a2, TI_FLAGS($28) # curr << 153 li t0, _TIF_ALLWORK_MASK << 154 and t0, a2 << 155 beqz t0, restore_partial << 156 SAVE_STATIC << 157 syscall_exit_work: << 158 LONG_L t0, PT_STATUS(sp) << 159 andi t0, t0, KU_USER << 160 beqz t0, resume_kernel << 161 li t0, _TIF_WORK_SYSCALL_EXIT << 162 and t0, a2 # a2 i << 163 beqz t0, work_pending # trac << 164 local_irq_enable # coul << 165 # call << 166 TRACE_IRQS_ON << 167 move a0, sp << 168 jal syscall_trace_leave << 169 b resume_userspace << 170 42 171 #if defined(CONFIG_CPU_MIPSR2) || defined(CONF !! 43 #include <linux/config.h> 172 defined(CONFIG_CPU_MIPSR6) || defined(CONF !! 44 #include <linux/sys.h> >> 45 #include <linux/linkage.h> >> 46 #include <asm/segment.h> >> 47 #include <asm/smp.h> >> 48 >> 49 EBX = 0x00 >> 50 ECX = 0x04 >> 51 EDX = 0x08 >> 52 ESI = 0x0C >> 53 EDI = 0x10 >> 54 EBP = 0x14 >> 55 EAX = 0x18 >> 56 DS = 0x1C >> 57 ES = 0x20 >> 58 ORIG_EAX = 0x24 >> 59 EIP = 0x28 >> 60 CS = 0x2C >> 61 EFLAGS = 0x30 >> 62 OLDESP = 0x34 >> 63 OLDSS = 0x38 >> 64 >> 65 CF_MASK = 0x00000001 >> 66 TF_MASK = 0x00000100 >> 67 IF_MASK = 0x00000200 >> 68 DF_MASK = 0x00000400 >> 69 NT_MASK = 0x00004000 >> 70 VM_MASK = 0x00020000 173 71 174 /* 72 /* 175 * MIPS32R2 Instruction Hazard Barrier - must !! 73 * these are offsets into the task-struct. 176 * !! 74 */ 177 * For C code use the inline version named ins !! 75 state = 0 >> 76 flags = 4 >> 77 sigpending = 8 >> 78 addr_limit = 12 >> 79 exec_domain = 16 >> 80 need_resched = 20 >> 81 tsk_ptrace = 24 >> 82 processor = 52 >> 83 >> 84 ENOSYS = 38 >> 85 >> 86 >> 87 #define SAVE_ALL \ >> 88 cld; \ >> 89 pushl %es; \ >> 90 pushl %ds; \ >> 91 pushl %eax; \ >> 92 pushl %ebp; \ >> 93 pushl %edi; \ >> 94 pushl %esi; \ >> 95 pushl %edx; \ >> 96 pushl %ecx; \ >> 97 pushl %ebx; \ >> 98 movl $(__KERNEL_DS),%edx; \ >> 99 movl %edx,%ds; \ >> 100 movl %edx,%es; >> 101 >> 102 #define RESTORE_ALL \ >> 103 popl %ebx; \ >> 104 popl %ecx; \ >> 105 popl %edx; \ >> 106 popl %esi; \ >> 107 popl %edi; \ >> 108 popl %ebp; \ >> 109 popl %eax; \ >> 110 1: popl %ds; \ >> 111 2: popl %es; \ >> 112 addl $4,%esp; \ >> 113 3: iret; \ >> 114 .section .fixup,"ax"; \ >> 115 4: movl $0,(%esp); \ >> 116 jmp 1b; \ >> 117 5: movl $0,(%esp); \ >> 118 jmp 2b; \ >> 119 6: pushl %ss; \ >> 120 popl %ds; \ >> 121 pushl %ss; \ >> 122 popl %es; \ >> 123 pushl $11; \ >> 124 call do_exit; \ >> 125 .previous; \ >> 126 .section __ex_table,"a";\ >> 127 .align 4; \ >> 128 .long 1b,4b; \ >> 129 .long 2b,5b; \ >> 130 .long 3b,6b; \ >> 131 .previous >> 132 >> 133 #define GET_CURRENT(reg) \ >> 134 movl $-8192, reg; \ >> 135 andl %esp, reg >> 136 >> 137 ENTRY(lcall7) >> 138 pushfl # We get a different stack layout with call gates, >> 139 pushl %eax # which has to be cleaned up later.. >> 140 SAVE_ALL >> 141 movl EIP(%esp),%eax # due to call gates, this is eflags, not eip.. >> 142 movl CS(%esp),%edx # this is eip.. >> 143 movl EFLAGS(%esp),%ecx # and this is cs.. >> 144 movl %eax,EFLAGS(%esp) # >> 145 andl $~(NT_MASK|TF_MASK|DF_MASK), %eax >> 146 pushl %eax >> 147 popfl >> 148 movl %edx,EIP(%esp) # Now we move them to their "normal" places >> 149 movl %ecx,CS(%esp) # >> 150 movl %esp,%ebx >> 151 pushl %ebx >> 152 andl $-8192,%ebx # GET_CURRENT >> 153 movl exec_domain(%ebx),%edx # Get the execution domain >> 154 movl 4(%edx),%edx # Get the lcall7 handler for the domain >> 155 pushl $0x7 >> 156 call *%edx >> 157 addl $4, %esp >> 158 popl %eax >> 159 jmp ret_from_sys_call >> 160 >> 161 ENTRY(lcall27) >> 162 pushfl # We get a different stack layout with call gates, >> 163 pushl %eax # which has to be cleaned up later.. >> 164 SAVE_ALL >> 165 movl EIP(%esp),%eax # due to call gates, this is eflags, not eip.. >> 166 movl CS(%esp),%edx # this is eip.. >> 167 movl EFLAGS(%esp),%ecx # and this is cs.. >> 168 movl %eax,EFLAGS(%esp) # >> 169 andl $~(NT_MASK|TF_MASK|DF_MASK), %eax >> 170 pushl %eax >> 171 popfl >> 172 movl %edx,EIP(%esp) # Now we move them to their "normal" places >> 173 movl %ecx,CS(%esp) # >> 174 movl %esp,%ebx >> 175 pushl %ebx >> 176 andl $-8192,%ebx # GET_CURRENT >> 177 movl exec_domain(%ebx),%edx # Get the execution domain >> 178 movl 4(%edx),%edx # Get the lcall7 handler for the domain >> 179 pushl $0x27 >> 180 call *%edx >> 181 addl $4, %esp >> 182 popl %eax >> 183 jmp ret_from_sys_call >> 184 >> 185 >> 186 ENTRY(ret_from_fork) >> 187 pushl %ebx >> 188 call SYMBOL_NAME(schedule_tail) >> 189 addl $4, %esp >> 190 GET_CURRENT(%ebx) >> 191 testb $0x02,tsk_ptrace(%ebx) # PT_TRACESYS >> 192 jne tracesys_exit >> 193 jmp ret_from_sys_call >> 194 >> 195 /* >> 196 * Return to user mode is not as complex as all this looks, >> 197 * but we want the default path for a system call return to >> 198 * go as quickly as possible which is why some of this is >> 199 * less clear than it otherwise should be. 178 */ 200 */ 179 LEAF(mips_ihb) << 180 .set MIPS_ISA_LEVEL_RAW << 181 jr.hb ra << 182 nop << 183 END(mips_ihb) << 184 201 185 #endif /* CONFIG_CPU_MIPSR2 - CONFIG_CPU_MIPSR !! 202 ENTRY(system_call) >> 203 pushl %eax # save orig_eax >> 204 SAVE_ALL >> 205 GET_CURRENT(%ebx) >> 206 testb $0x02,tsk_ptrace(%ebx) # PT_TRACESYS >> 207 jne tracesys >> 208 cmpl $(NR_syscalls),%eax >> 209 jae badsys >> 210 call *SYMBOL_NAME(sys_call_table)(,%eax,4) >> 211 movl %eax,EAX(%esp) # save the return value >> 212 ENTRY(ret_from_sys_call) >> 213 cli # need_resched and signals atomic test >> 214 cmpl $0,need_resched(%ebx) >> 215 jne reschedule >> 216 cmpl $0,sigpending(%ebx) >> 217 jne signal_return >> 218 restore_all: >> 219 RESTORE_ALL >> 220 >> 221 ALIGN >> 222 signal_return: >> 223 sti # we can get here from an interrupt handler >> 224 testl $(VM_MASK),EFLAGS(%esp) >> 225 movl %esp,%eax >> 226 jne v86_signal_return >> 227 xorl %edx,%edx >> 228 call SYMBOL_NAME(do_signal) >> 229 jmp restore_all >> 230 >> 231 ALIGN >> 232 v86_signal_return: >> 233 call SYMBOL_NAME(save_v86_state) >> 234 movl %eax,%esp >> 235 xorl %edx,%edx >> 236 call SYMBOL_NAME(do_signal) >> 237 jmp restore_all >> 238 >> 239 ALIGN >> 240 tracesys: >> 241 movl $-ENOSYS,EAX(%esp) >> 242 call SYMBOL_NAME(syscall_trace) >> 243 movl ORIG_EAX(%esp),%eax >> 244 cmpl $(NR_syscalls),%eax >> 245 jae tracesys_exit >> 246 call *SYMBOL_NAME(sys_call_table)(,%eax,4) >> 247 movl %eax,EAX(%esp) # save the return value >> 248 tracesys_exit: >> 249 call SYMBOL_NAME(syscall_trace) >> 250 jmp ret_from_sys_call >> 251 badsys: >> 252 movl $-ENOSYS,EAX(%esp) >> 253 jmp ret_from_sys_call >> 254 >> 255 ALIGN >> 256 ENTRY(ret_from_intr) >> 257 GET_CURRENT(%ebx) >> 258 ret_from_exception: >> 259 movl EFLAGS(%esp),%eax # mix EFLAGS and CS >> 260 movb CS(%esp),%al >> 261 testl $(VM_MASK | 3),%eax # return to VM86 mode or non-supervisor? >> 262 jne ret_from_sys_call >> 263 jmp restore_all >> 264 >> 265 ALIGN >> 266 reschedule: >> 267 call SYMBOL_NAME(schedule) # test >> 268 jmp ret_from_sys_call >> 269 >> 270 ENTRY(divide_error) >> 271 pushl $0 # no error code >> 272 pushl $ SYMBOL_NAME(do_divide_error) >> 273 ALIGN >> 274 error_code: >> 275 pushl %ds >> 276 pushl %eax >> 277 xorl %eax,%eax >> 278 pushl %ebp >> 279 pushl %edi >> 280 pushl %esi >> 281 pushl %edx >> 282 decl %eax # eax = -1 >> 283 pushl %ecx >> 284 pushl %ebx >> 285 cld >> 286 movl %es,%ecx >> 287 movl ORIG_EAX(%esp), %esi # get the error code >> 288 movl ES(%esp), %edi # get the function address >> 289 movl %eax, ORIG_EAX(%esp) >> 290 movl %ecx, ES(%esp) >> 291 movl %esp,%edx >> 292 pushl %esi # push the error code >> 293 pushl %edx # push the pt_regs pointer >> 294 movl $(__KERNEL_DS),%edx >> 295 movl %edx,%ds >> 296 movl %edx,%es >> 297 GET_CURRENT(%ebx) >> 298 call *%edi >> 299 addl $8,%esp >> 300 jmp ret_from_exception >> 301 >> 302 ENTRY(coprocessor_error) >> 303 pushl $0 >> 304 pushl $ SYMBOL_NAME(do_coprocessor_error) >> 305 jmp error_code >> 306 >> 307 ENTRY(simd_coprocessor_error) >> 308 pushl $0 >> 309 pushl $ SYMBOL_NAME(do_simd_coprocessor_error) >> 310 jmp error_code >> 311 >> 312 ENTRY(device_not_available) >> 313 pushl $-1 # mark this as an int >> 314 SAVE_ALL >> 315 GET_CURRENT(%ebx) >> 316 movl %cr0,%eax >> 317 testl $0x4,%eax # EM (math emulation bit) >> 318 jne device_not_available_emulate >> 319 call SYMBOL_NAME(math_state_restore) >> 320 jmp ret_from_exception >> 321 device_not_available_emulate: >> 322 pushl $0 # temporary storage for ORIG_EIP >> 323 call SYMBOL_NAME(math_emulate) >> 324 addl $4,%esp >> 325 jmp ret_from_exception >> 326 >> 327 ENTRY(debug) >> 328 pushl $0 >> 329 pushl $ SYMBOL_NAME(do_debug) >> 330 jmp error_code >> 331 >> 332 ENTRY(nmi) >> 333 pushl %eax >> 334 SAVE_ALL >> 335 movl %esp,%edx >> 336 pushl $0 >> 337 pushl %edx >> 338 call SYMBOL_NAME(do_nmi) >> 339 addl $8,%esp >> 340 RESTORE_ALL >> 341 >> 342 ENTRY(int3) >> 343 pushl $0 >> 344 pushl $ SYMBOL_NAME(do_int3) >> 345 jmp error_code >> 346 >> 347 ENTRY(overflow) >> 348 pushl $0 >> 349 pushl $ SYMBOL_NAME(do_overflow) >> 350 jmp error_code >> 351 >> 352 ENTRY(bounds) >> 353 pushl $0 >> 354 pushl $ SYMBOL_NAME(do_bounds) >> 355 jmp error_code >> 356 >> 357 ENTRY(invalid_op) >> 358 pushl $0 >> 359 pushl $ SYMBOL_NAME(do_invalid_op) >> 360 jmp error_code >> 361 >> 362 ENTRY(coprocessor_segment_overrun) >> 363 pushl $0 >> 364 pushl $ SYMBOL_NAME(do_coprocessor_segment_overrun) >> 365 jmp error_code >> 366 >> 367 ENTRY(double_fault) >> 368 pushl $ SYMBOL_NAME(do_double_fault) >> 369 jmp error_code >> 370 >> 371 ENTRY(invalid_TSS) >> 372 pushl $ SYMBOL_NAME(do_invalid_TSS) >> 373 jmp error_code >> 374 >> 375 ENTRY(segment_not_present) >> 376 pushl $ SYMBOL_NAME(do_segment_not_present) >> 377 jmp error_code >> 378 >> 379 ENTRY(stack_segment) >> 380 pushl $ SYMBOL_NAME(do_stack_segment) >> 381 jmp error_code >> 382 >> 383 ENTRY(general_protection) >> 384 pushl $ SYMBOL_NAME(do_general_protection) >> 385 jmp error_code >> 386 >> 387 ENTRY(alignment_check) >> 388 pushl $ SYMBOL_NAME(do_alignment_check) >> 389 jmp error_code >> 390 >> 391 ENTRY(page_fault) >> 392 pushl $ SYMBOL_NAME(do_page_fault) >> 393 jmp error_code >> 394 >> 395 ENTRY(machine_check) >> 396 pushl $0 >> 397 pushl $ SYMBOL_NAME(do_machine_check) >> 398 jmp error_code >> 399 >> 400 ENTRY(spurious_interrupt_bug) >> 401 pushl $0 >> 402 pushl $ SYMBOL_NAME(do_spurious_interrupt_bug) >> 403 jmp error_code >> 404 >> 405 .data >> 406 ENTRY(sys_call_table) >> 407 .long SYMBOL_NAME(sys_ni_syscall) /* 0 - old "setup()" system call*/ >> 408 .long SYMBOL_NAME(sys_exit) >> 409 .long SYMBOL_NAME(sys_fork) >> 410 .long SYMBOL_NAME(sys_read) >> 411 .long SYMBOL_NAME(sys_write) >> 412 .long SYMBOL_NAME(sys_open) /* 5 */ >> 413 .long SYMBOL_NAME(sys_close) >> 414 .long SYMBOL_NAME(sys_waitpid) >> 415 .long SYMBOL_NAME(sys_creat) >> 416 .long SYMBOL_NAME(sys_link) >> 417 .long SYMBOL_NAME(sys_unlink) /* 10 */ >> 418 .long SYMBOL_NAME(sys_execve) >> 419 .long SYMBOL_NAME(sys_chdir) >> 420 .long SYMBOL_NAME(sys_time) >> 421 .long SYMBOL_NAME(sys_mknod) >> 422 .long SYMBOL_NAME(sys_chmod) /* 15 */ >> 423 .long SYMBOL_NAME(sys_lchown16) >> 424 .long SYMBOL_NAME(sys_ni_syscall) /* old break syscall holder */ >> 425 .long SYMBOL_NAME(sys_stat) >> 426 .long SYMBOL_NAME(sys_lseek) >> 427 .long SYMBOL_NAME(sys_getpid) /* 20 */ >> 428 .long SYMBOL_NAME(sys_mount) >> 429 .long SYMBOL_NAME(sys_oldumount) >> 430 .long SYMBOL_NAME(sys_setuid16) >> 431 .long SYMBOL_NAME(sys_getuid16) >> 432 .long SYMBOL_NAME(sys_stime) /* 25 */ >> 433 .long SYMBOL_NAME(sys_ptrace) >> 434 .long SYMBOL_NAME(sys_alarm) >> 435 .long SYMBOL_NAME(sys_fstat) >> 436 .long SYMBOL_NAME(sys_pause) >> 437 .long SYMBOL_NAME(sys_utime) /* 30 */ >> 438 .long SYMBOL_NAME(sys_ni_syscall) /* old stty syscall holder */ >> 439 .long SYMBOL_NAME(sys_ni_syscall) /* old gtty syscall holder */ >> 440 .long SYMBOL_NAME(sys_access) >> 441 .long SYMBOL_NAME(sys_nice) >> 442 .long SYMBOL_NAME(sys_ni_syscall) /* 35 */ /* old ftime syscall holder */ >> 443 .long SYMBOL_NAME(sys_sync) >> 444 .long SYMBOL_NAME(sys_kill) >> 445 .long SYMBOL_NAME(sys_rename) >> 446 .long SYMBOL_NAME(sys_mkdir) >> 447 .long SYMBOL_NAME(sys_rmdir) /* 40 */ >> 448 .long SYMBOL_NAME(sys_dup) >> 449 .long SYMBOL_NAME(sys_pipe) >> 450 .long SYMBOL_NAME(sys_times) >> 451 .long SYMBOL_NAME(sys_ni_syscall) /* old prof syscall holder */ >> 452 .long SYMBOL_NAME(sys_brk) /* 45 */ >> 453 .long SYMBOL_NAME(sys_setgid16) >> 454 .long SYMBOL_NAME(sys_getgid16) >> 455 .long SYMBOL_NAME(sys_signal) >> 456 .long SYMBOL_NAME(sys_geteuid16) >> 457 .long SYMBOL_NAME(sys_getegid16) /* 50 */ >> 458 .long SYMBOL_NAME(sys_acct) >> 459 .long SYMBOL_NAME(sys_umount) /* recycled never used phys() */ >> 460 .long SYMBOL_NAME(sys_ni_syscall) /* old lock syscall holder */ >> 461 .long SYMBOL_NAME(sys_ioctl) >> 462 .long SYMBOL_NAME(sys_fcntl) /* 55 */ >> 463 .long SYMBOL_NAME(sys_ni_syscall) /* old mpx syscall holder */ >> 464 .long SYMBOL_NAME(sys_setpgid) >> 465 .long SYMBOL_NAME(sys_ni_syscall) /* old ulimit syscall holder */ >> 466 .long SYMBOL_NAME(sys_olduname) >> 467 .long SYMBOL_NAME(sys_umask) /* 60 */ >> 468 .long SYMBOL_NAME(sys_chroot) >> 469 .long SYMBOL_NAME(sys_ustat) >> 470 .long SYMBOL_NAME(sys_dup2) >> 471 .long SYMBOL_NAME(sys_getppid) >> 472 .long SYMBOL_NAME(sys_getpgrp) /* 65 */ >> 473 .long SYMBOL_NAME(sys_setsid) >> 474 .long SYMBOL_NAME(sys_sigaction) >> 475 .long SYMBOL_NAME(sys_sgetmask) >> 476 .long SYMBOL_NAME(sys_ssetmask) >> 477 .long SYMBOL_NAME(sys_setreuid16) /* 70 */ >> 478 .long SYMBOL_NAME(sys_setregid16) >> 479 .long SYMBOL_NAME(sys_sigsuspend) >> 480 .long SYMBOL_NAME(sys_sigpending) >> 481 .long SYMBOL_NAME(sys_sethostname) >> 482 .long SYMBOL_NAME(sys_setrlimit) /* 75 */ >> 483 .long SYMBOL_NAME(sys_old_getrlimit) >> 484 .long SYMBOL_NAME(sys_getrusage) >> 485 .long SYMBOL_NAME(sys_gettimeofday) >> 486 .long SYMBOL_NAME(sys_settimeofday) >> 487 .long SYMBOL_NAME(sys_getgroups16) /* 80 */ >> 488 .long SYMBOL_NAME(sys_setgroups16) >> 489 .long SYMBOL_NAME(old_select) >> 490 .long SYMBOL_NAME(sys_symlink) >> 491 .long SYMBOL_NAME(sys_lstat) >> 492 .long SYMBOL_NAME(sys_readlink) /* 85 */ >> 493 .long SYMBOL_NAME(sys_uselib) >> 494 .long SYMBOL_NAME(sys_swapon) >> 495 .long SYMBOL_NAME(sys_reboot) >> 496 .long SYMBOL_NAME(old_readdir) >> 497 .long SYMBOL_NAME(old_mmap) /* 90 */ >> 498 .long SYMBOL_NAME(sys_munmap) >> 499 .long SYMBOL_NAME(sys_truncate) >> 500 .long SYMBOL_NAME(sys_ftruncate) >> 501 .long SYMBOL_NAME(sys_fchmod) >> 502 .long SYMBOL_NAME(sys_fchown16) /* 95 */ >> 503 .long SYMBOL_NAME(sys_getpriority) >> 504 .long SYMBOL_NAME(sys_setpriority) >> 505 .long SYMBOL_NAME(sys_ni_syscall) /* old profil syscall holder */ >> 506 .long SYMBOL_NAME(sys_statfs) >> 507 .long SYMBOL_NAME(sys_fstatfs) /* 100 */ >> 508 .long SYMBOL_NAME(sys_ioperm) >> 509 .long SYMBOL_NAME(sys_socketcall) >> 510 .long SYMBOL_NAME(sys_syslog) >> 511 .long SYMBOL_NAME(sys_setitimer) >> 512 .long SYMBOL_NAME(sys_getitimer) /* 105 */ >> 513 .long SYMBOL_NAME(sys_newstat) >> 514 .long SYMBOL_NAME(sys_newlstat) >> 515 .long SYMBOL_NAME(sys_newfstat) >> 516 .long SYMBOL_NAME(sys_uname) >> 517 .long SYMBOL_NAME(sys_iopl) /* 110 */ >> 518 .long SYMBOL_NAME(sys_vhangup) >> 519 .long SYMBOL_NAME(sys_ni_syscall) /* old "idle" system call */ >> 520 .long SYMBOL_NAME(sys_vm86old) >> 521 .long SYMBOL_NAME(sys_wait4) >> 522 .long SYMBOL_NAME(sys_swapoff) /* 115 */ >> 523 .long SYMBOL_NAME(sys_sysinfo) >> 524 .long SYMBOL_NAME(sys_ipc) >> 525 .long SYMBOL_NAME(sys_fsync) >> 526 .long SYMBOL_NAME(sys_sigreturn) >> 527 .long SYMBOL_NAME(sys_clone) /* 120 */ >> 528 .long SYMBOL_NAME(sys_setdomainname) >> 529 .long SYMBOL_NAME(sys_newuname) >> 530 .long SYMBOL_NAME(sys_modify_ldt) >> 531 .long SYMBOL_NAME(sys_adjtimex) >> 532 .long SYMBOL_NAME(sys_mprotect) /* 125 */ >> 533 .long SYMBOL_NAME(sys_sigprocmask) >> 534 .long SYMBOL_NAME(sys_create_module) >> 535 .long SYMBOL_NAME(sys_init_module) >> 536 .long SYMBOL_NAME(sys_delete_module) >> 537 .long SYMBOL_NAME(sys_get_kernel_syms) /* 130 */ >> 538 .long SYMBOL_NAME(sys_quotactl) >> 539 .long SYMBOL_NAME(sys_getpgid) >> 540 .long SYMBOL_NAME(sys_fchdir) >> 541 .long SYMBOL_NAME(sys_bdflush) >> 542 .long SYMBOL_NAME(sys_sysfs) /* 135 */ >> 543 .long SYMBOL_NAME(sys_personality) >> 544 .long SYMBOL_NAME(sys_ni_syscall) /* for afs_syscall */ >> 545 .long SYMBOL_NAME(sys_setfsuid16) >> 546 .long SYMBOL_NAME(sys_setfsgid16) >> 547 .long SYMBOL_NAME(sys_llseek) /* 140 */ >> 548 .long SYMBOL_NAME(sys_getdents) >> 549 .long SYMBOL_NAME(sys_select) >> 550 .long SYMBOL_NAME(sys_flock) >> 551 .long SYMBOL_NAME(sys_msync) >> 552 .long SYMBOL_NAME(sys_readv) /* 145 */ >> 553 .long SYMBOL_NAME(sys_writev) >> 554 .long SYMBOL_NAME(sys_getsid) >> 555 .long SYMBOL_NAME(sys_fdatasync) >> 556 .long SYMBOL_NAME(sys_sysctl) >> 557 .long SYMBOL_NAME(sys_mlock) /* 150 */ >> 558 .long SYMBOL_NAME(sys_munlock) >> 559 .long SYMBOL_NAME(sys_mlockall) >> 560 .long SYMBOL_NAME(sys_munlockall) >> 561 .long SYMBOL_NAME(sys_sched_setparam) >> 562 .long SYMBOL_NAME(sys_sched_getparam) /* 155 */ >> 563 .long SYMBOL_NAME(sys_sched_setscheduler) >> 564 .long SYMBOL_NAME(sys_sched_getscheduler) >> 565 .long SYMBOL_NAME(sys_sched_yield) >> 566 .long SYMBOL_NAME(sys_sched_get_priority_max) >> 567 .long SYMBOL_NAME(sys_sched_get_priority_min) /* 160 */ >> 568 .long SYMBOL_NAME(sys_sched_rr_get_interval) >> 569 .long SYMBOL_NAME(sys_nanosleep) >> 570 .long SYMBOL_NAME(sys_mremap) >> 571 .long SYMBOL_NAME(sys_setresuid16) >> 572 .long SYMBOL_NAME(sys_getresuid16) /* 165 */ >> 573 .long SYMBOL_NAME(sys_vm86) >> 574 .long SYMBOL_NAME(sys_query_module) >> 575 .long SYMBOL_NAME(sys_poll) >> 576 .long SYMBOL_NAME(sys_nfsservctl) >> 577 .long SYMBOL_NAME(sys_setresgid16) /* 170 */ >> 578 .long SYMBOL_NAME(sys_getresgid16) >> 579 .long SYMBOL_NAME(sys_prctl) >> 580 .long SYMBOL_NAME(sys_rt_sigreturn) >> 581 .long SYMBOL_NAME(sys_rt_sigaction) >> 582 .long SYMBOL_NAME(sys_rt_sigprocmask) /* 175 */ >> 583 .long SYMBOL_NAME(sys_rt_sigpending) >> 584 .long SYMBOL_NAME(sys_rt_sigtimedwait) >> 585 .long SYMBOL_NAME(sys_rt_sigqueueinfo) >> 586 .long SYMBOL_NAME(sys_rt_sigsuspend) >> 587 .long SYMBOL_NAME(sys_pread) /* 180 */ >> 588 .long SYMBOL_NAME(sys_pwrite) >> 589 .long SYMBOL_NAME(sys_chown16) >> 590 .long SYMBOL_NAME(sys_getcwd) >> 591 .long SYMBOL_NAME(sys_capget) >> 592 .long SYMBOL_NAME(sys_capset) /* 185 */ >> 593 .long SYMBOL_NAME(sys_sigaltstack) >> 594 .long SYMBOL_NAME(sys_sendfile) >> 595 .long SYMBOL_NAME(sys_ni_syscall) /* streams1 */ >> 596 .long SYMBOL_NAME(sys_ni_syscall) /* streams2 */ >> 597 .long SYMBOL_NAME(sys_vfork) /* 190 */ >> 598 .long SYMBOL_NAME(sys_getrlimit) >> 599 .long SYMBOL_NAME(sys_mmap2) >> 600 .long SYMBOL_NAME(sys_truncate64) >> 601 .long SYMBOL_NAME(sys_ftruncate64) >> 602 .long SYMBOL_NAME(sys_stat64) /* 195 */ >> 603 .long SYMBOL_NAME(sys_lstat64) >> 604 .long SYMBOL_NAME(sys_fstat64) >> 605 .long SYMBOL_NAME(sys_lchown) >> 606 .long SYMBOL_NAME(sys_getuid) >> 607 .long SYMBOL_NAME(sys_getgid) /* 200 */ >> 608 .long SYMBOL_NAME(sys_geteuid) >> 609 .long SYMBOL_NAME(sys_getegid) >> 610 .long SYMBOL_NAME(sys_setreuid) >> 611 .long SYMBOL_NAME(sys_setregid) >> 612 .long SYMBOL_NAME(sys_getgroups) /* 205 */ >> 613 .long SYMBOL_NAME(sys_setgroups) >> 614 .long SYMBOL_NAME(sys_fchown) >> 615 .long SYMBOL_NAME(sys_setresuid) >> 616 .long SYMBOL_NAME(sys_getresuid) >> 617 .long SYMBOL_NAME(sys_setresgid) /* 210 */ >> 618 .long SYMBOL_NAME(sys_getresgid) >> 619 .long SYMBOL_NAME(sys_chown) >> 620 .long SYMBOL_NAME(sys_setuid) >> 621 .long SYMBOL_NAME(sys_setgid) >> 622 .long SYMBOL_NAME(sys_setfsuid) /* 215 */ >> 623 .long SYMBOL_NAME(sys_setfsgid) >> 624 .long SYMBOL_NAME(sys_pivot_root) >> 625 .long SYMBOL_NAME(sys_mincore) >> 626 .long SYMBOL_NAME(sys_madvise) >> 627 .long SYMBOL_NAME(sys_getdents64) /* 220 */ >> 628 .long SYMBOL_NAME(sys_fcntl64) >> 629 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for TUX */ >> 630 .long SYMBOL_NAME(sys_ni_syscall) /* Reserved for Security */ >> 631 .long SYMBOL_NAME(sys_gettid) >> 632 .long SYMBOL_NAME(sys_readahead) /* 225 */ >> 633 .long SYMBOL_NAME(sys_setxattr) >> 634 .long SYMBOL_NAME(sys_lsetxattr) >> 635 .long SYMBOL_NAME(sys_fsetxattr) >> 636 .long SYMBOL_NAME(sys_getxattr) >> 637 .long SYMBOL_NAME(sys_lgetxattr) /* 230 */ >> 638 .long SYMBOL_NAME(sys_fgetxattr) >> 639 .long SYMBOL_NAME(sys_listxattr) >> 640 .long SYMBOL_NAME(sys_llistxattr) >> 641 .long SYMBOL_NAME(sys_flistxattr) >> 642 .long SYMBOL_NAME(sys_removexattr) /* 235 */ >> 643 .long SYMBOL_NAME(sys_lremovexattr) >> 644 .long SYMBOL_NAME(sys_fremovexattr) >> 645 .long SYMBOL_NAME(sys_tkill) >> 646 .long SYMBOL_NAME(sys_sendfile64) >> 647 .long SYMBOL_NAME(sys_ni_syscall) /* 240 reserved for futex */ >> 648 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for sched_setaffinity */ >> 649 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for sched_getaffinity */ >> 650 .long SYMBOL_NAME(sys_ni_syscall) /* sys_set_thread_area */ >> 651 .long SYMBOL_NAME(sys_ni_syscall) /* sys_get_thread_area */ >> 652 .long SYMBOL_NAME(sys_ni_syscall) /* 245 sys_io_setup */ >> 653 .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_destroy */ >> 654 .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_getevents */ >> 655 .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_submit */ >> 656 .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_cancel */ >> 657 .long SYMBOL_NAME(sys_ni_syscall) /* 250 sys_alloc_hugepages */ >> 658 .long SYMBOL_NAME(sys_ni_syscall) /* sys_free_hugepages */ >> 659 .long SYMBOL_NAME(sys_ni_syscall) /* sys_exit_group */ >> 660 .long SYMBOL_NAME(sys_ni_syscall) /* sys_lookup_dcookie */ >> 661 .long SYMBOL_NAME(sys_ni_syscall) /* sys_epoll_create */ >> 662 .long SYMBOL_NAME(sys_ni_syscall) /* sys_epoll_ctl 255 */ >> 663 .long SYMBOL_NAME(sys_ni_syscall) /* sys_epoll_wait */ >> 664 .long SYMBOL_NAME(sys_ni_syscall) /* sys_remap_file_pages */ >> 665 .long SYMBOL_NAME(sys_ni_syscall) /* sys_set_tid_address */ >> 666 >> 667 .rept NR_syscalls-(.-sys_call_table)/4 >> 668 .long SYMBOL_NAME(sys_ni_syscall) >> 669 .endr
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.