1 /* 2 * linux/arch/i386/entry.S 3 * 4 * Copyright (C) 1991, 1992 Linus Torvalds 5 */ 6 7 /* 8 * entry.S contains the system-call and fault low-level handling routines. 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. 41 */ 42 43 #include <linux/config.h> 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 IF_MASK = 0x00000200 67 NT_MASK = 0x00004000 68 VM_MASK = 0x00020000 69 70 /* 71 * these are offsets into the task-struct. 72 */ 73 state = 0 74 flags = 4 75 sigpending = 8 76 addr_limit = 12 77 exec_domain = 16 78 need_resched = 20 79 tsk_ptrace = 24 80 processor = 52 81 82 ENOSYS = 38 83 84 85 #define SAVE_ALL \ 86 cld; \ 87 pushl %es; \ 88 pushl %ds; \ 89 pushl %eax; \ 90 pushl %ebp; \ 91 pushl %edi; \ 92 pushl %esi; \ 93 pushl %edx; \ 94 pushl %ecx; \ 95 pushl %ebx; \ 96 movl $(__KERNEL_DS),%edx; \ 97 movl %edx,%ds; \ 98 movl %edx,%es; 99 100 #define RESTORE_ALL \ 101 popl %ebx; \ 102 popl %ecx; \ 103 popl %edx; \ 104 popl %esi; \ 105 popl %edi; \ 106 popl %ebp; \ 107 popl %eax; \ 108 1: popl %ds; \ 109 2: popl %es; \ 110 addl $4,%esp; \ 111 3: iret; \ 112 .section .fixup,"ax"; \ 113 4: movl $0,(%esp); \ 114 jmp 1b; \ 115 5: movl $0,(%esp); \ 116 jmp 2b; \ 117 6: pushl %ss; \ 118 popl %ds; \ 119 pushl %ss; \ 120 popl %es; \ 121 pushl $11; \ 122 call do_exit; \ 123 .previous; \ 124 .section __ex_table,"a";\ 125 .align 4; \ 126 .long 1b,4b; \ 127 .long 2b,5b; \ 128 .long 3b,6b; \ 129 .previous 130 131 #define GET_CURRENT(reg) \ 132 movl $-8192, reg; \ 133 andl %esp, reg 134 135 ENTRY(lcall7) 136 pushfl # We get a different stack layout with call gates, 137 pushl %eax # which has to be cleaned up later.. 138 SAVE_ALL 139 movl EIP(%esp),%eax # due to call gates, this is eflags, not eip.. 140 movl CS(%esp),%edx # this is eip.. 141 movl EFLAGS(%esp),%ecx # and this is cs.. 142 movl %eax,EFLAGS(%esp) # 143 movl %edx,EIP(%esp) # Now we move them to their "normal" places 144 movl %ecx,CS(%esp) # 145 movl %esp,%ebx 146 pushl %ebx 147 andl $-8192,%ebx # GET_CURRENT 148 movl exec_domain(%ebx),%edx # Get the execution domain 149 movl 4(%edx),%edx # Get the lcall7 handler for the domain 150 pushl $0x7 151 call *%edx 152 addl $4, %esp 153 popl %eax 154 jmp ret_from_sys_call 155 156 ENTRY(lcall27) 157 pushfl # We get a different stack layout with call gates, 158 pushl %eax # which has to be cleaned up later.. 159 SAVE_ALL 160 movl EIP(%esp),%eax # due to call gates, this is eflags, not eip.. 161 movl CS(%esp),%edx # this is eip.. 162 movl EFLAGS(%esp),%ecx # and this is cs.. 163 movl %eax,EFLAGS(%esp) # 164 movl %edx,EIP(%esp) # Now we move them to their "normal" places 165 movl %ecx,CS(%esp) # 166 movl %esp,%ebx 167 pushl %ebx 168 andl $-8192,%ebx # GET_CURRENT 169 movl exec_domain(%ebx),%edx # Get the execution domain 170 movl 4(%edx),%edx # Get the lcall7 handler for the domain 171 pushl $0x27 172 call *%edx 173 addl $4, %esp 174 popl %eax 175 jmp ret_from_sys_call 176 177 178 ENTRY(ret_from_fork) 179 pushl %ebx 180 call SYMBOL_NAME(schedule_tail) 181 addl $4, %esp 182 GET_CURRENT(%ebx) 183 testb $0x02,tsk_ptrace(%ebx) # PT_TRACESYS 184 jne tracesys_exit 185 jmp ret_from_sys_call 186 187 /* 188 * Return to user mode is not as complex as all this looks, 189 * but we want the default path for a system call return to 190 * go as quickly as possible which is why some of this is 191 * less clear than it otherwise should be. 192 */ 193 194 ENTRY(system_call) 195 pushl %eax # save orig_eax 196 SAVE_ALL 197 GET_CURRENT(%ebx) 198 testb $0x02,tsk_ptrace(%ebx) # PT_TRACESYS 199 jne tracesys 200 cmpl $(NR_syscalls),%eax 201 jae badsys 202 call *SYMBOL_NAME(sys_call_table)(,%eax,4) 203 movl %eax,EAX(%esp) # save the return value 204 ENTRY(ret_from_sys_call) 205 cli # need_resched and signals atomic test 206 cmpl $0,need_resched(%ebx) 207 jne reschedule 208 cmpl $0,sigpending(%ebx) 209 jne signal_return 210 restore_all: 211 RESTORE_ALL 212 213 ALIGN 214 signal_return: 215 sti # we can get here from an interrupt handler 216 testl $(VM_MASK),EFLAGS(%esp) 217 movl %esp,%eax 218 jne v86_signal_return 219 xorl %edx,%edx 220 call SYMBOL_NAME(do_signal) 221 jmp restore_all 222 223 ALIGN 224 v86_signal_return: 225 call SYMBOL_NAME(save_v86_state) 226 movl %eax,%esp 227 xorl %edx,%edx 228 call SYMBOL_NAME(do_signal) 229 jmp restore_all 230 231 ALIGN 232 tracesys: 233 movl $-ENOSYS,EAX(%esp) 234 call SYMBOL_NAME(syscall_trace) 235 movl ORIG_EAX(%esp),%eax 236 cmpl $(NR_syscalls),%eax 237 jae tracesys_exit 238 call *SYMBOL_NAME(sys_call_table)(,%eax,4) 239 movl %eax,EAX(%esp) # save the return value 240 tracesys_exit: 241 call SYMBOL_NAME(syscall_trace) 242 jmp ret_from_sys_call 243 badsys: 244 movl $-ENOSYS,EAX(%esp) 245 jmp ret_from_sys_call 246 247 ALIGN 248 ENTRY(ret_from_intr) 249 GET_CURRENT(%ebx) 250 ret_from_exception: 251 movl EFLAGS(%esp),%eax # mix EFLAGS and CS 252 movb CS(%esp),%al 253 testl $(VM_MASK | 3),%eax # return to VM86 mode or non-supervisor? 254 jne ret_from_sys_call 255 jmp restore_all 256 257 ALIGN 258 reschedule: 259 call SYMBOL_NAME(schedule) # test 260 jmp ret_from_sys_call 261 262 ENTRY(divide_error) 263 pushl $0 # no error code 264 pushl $ SYMBOL_NAME(do_divide_error) 265 ALIGN 266 error_code: 267 pushl %ds 268 pushl %eax 269 xorl %eax,%eax 270 pushl %ebp 271 pushl %edi 272 pushl %esi 273 pushl %edx 274 decl %eax # eax = -1 275 pushl %ecx 276 pushl %ebx 277 cld 278 movl %es,%ecx 279 movl ORIG_EAX(%esp), %esi # get the error code 280 movl ES(%esp), %edi # get the function address 281 movl %eax, ORIG_EAX(%esp) 282 movl %ecx, ES(%esp) 283 movl %esp,%edx 284 pushl %esi # push the error code 285 pushl %edx # push the pt_regs pointer 286 movl $(__KERNEL_DS),%edx 287 movl %edx,%ds 288 movl %edx,%es 289 GET_CURRENT(%ebx) 290 call *%edi 291 addl $8,%esp 292 jmp ret_from_exception 293 294 ENTRY(coprocessor_error) 295 pushl $0 296 pushl $ SYMBOL_NAME(do_coprocessor_error) 297 jmp error_code 298 299 ENTRY(simd_coprocessor_error) 300 pushl $0 301 pushl $ SYMBOL_NAME(do_simd_coprocessor_error) 302 jmp error_code 303 304 ENTRY(device_not_available) 305 pushl $-1 # mark this as an int 306 SAVE_ALL 307 GET_CURRENT(%ebx) 308 movl %cr0,%eax 309 testl $0x4,%eax # EM (math emulation bit) 310 jne device_not_available_emulate 311 call SYMBOL_NAME(math_state_restore) 312 jmp ret_from_exception 313 device_not_available_emulate: 314 pushl $0 # temporary storage for ORIG_EIP 315 call SYMBOL_NAME(math_emulate) 316 addl $4,%esp 317 jmp ret_from_exception 318 319 ENTRY(debug) 320 pushl $0 321 pushl $ SYMBOL_NAME(do_debug) 322 jmp error_code 323 324 ENTRY(nmi) 325 pushl %eax 326 SAVE_ALL 327 movl %esp,%edx 328 pushl $0 329 pushl %edx 330 call SYMBOL_NAME(do_nmi) 331 addl $8,%esp 332 RESTORE_ALL 333 334 ENTRY(int3) 335 pushl $0 336 pushl $ SYMBOL_NAME(do_int3) 337 jmp error_code 338 339 ENTRY(overflow) 340 pushl $0 341 pushl $ SYMBOL_NAME(do_overflow) 342 jmp error_code 343 344 ENTRY(bounds) 345 pushl $0 346 pushl $ SYMBOL_NAME(do_bounds) 347 jmp error_code 348 349 ENTRY(invalid_op) 350 pushl $0 351 pushl $ SYMBOL_NAME(do_invalid_op) 352 jmp error_code 353 354 ENTRY(coprocessor_segment_overrun) 355 pushl $0 356 pushl $ SYMBOL_NAME(do_coprocessor_segment_overrun) 357 jmp error_code 358 359 ENTRY(double_fault) 360 pushl $ SYMBOL_NAME(do_double_fault) 361 jmp error_code 362 363 ENTRY(invalid_TSS) 364 pushl $ SYMBOL_NAME(do_invalid_TSS) 365 jmp error_code 366 367 ENTRY(segment_not_present) 368 pushl $ SYMBOL_NAME(do_segment_not_present) 369 jmp error_code 370 371 ENTRY(stack_segment) 372 pushl $ SYMBOL_NAME(do_stack_segment) 373 jmp error_code 374 375 ENTRY(general_protection) 376 pushl $ SYMBOL_NAME(do_general_protection) 377 jmp error_code 378 379 ENTRY(alignment_check) 380 pushl $ SYMBOL_NAME(do_alignment_check) 381 jmp error_code 382 383 ENTRY(page_fault) 384 pushl $ SYMBOL_NAME(do_page_fault) 385 jmp error_code 386 387 ENTRY(machine_check) 388 pushl $0 389 pushl $ SYMBOL_NAME(do_machine_check) 390 jmp error_code 391 392 ENTRY(spurious_interrupt_bug) 393 pushl $0 394 pushl $ SYMBOL_NAME(do_spurious_interrupt_bug) 395 jmp error_code 396 397 .data 398 ENTRY(sys_call_table) 399 .long SYMBOL_NAME(sys_ni_syscall) /* 0 - old "setup()" system call*/ 400 .long SYMBOL_NAME(sys_exit) 401 .long SYMBOL_NAME(sys_fork) 402 .long SYMBOL_NAME(sys_read) 403 .long SYMBOL_NAME(sys_write) 404 .long SYMBOL_NAME(sys_open) /* 5 */ 405 .long SYMBOL_NAME(sys_close) 406 .long SYMBOL_NAME(sys_waitpid) 407 .long SYMBOL_NAME(sys_creat) 408 .long SYMBOL_NAME(sys_link) 409 .long SYMBOL_NAME(sys_unlink) /* 10 */ 410 .long SYMBOL_NAME(sys_execve) 411 .long SYMBOL_NAME(sys_chdir) 412 .long SYMBOL_NAME(sys_time) 413 .long SYMBOL_NAME(sys_mknod) 414 .long SYMBOL_NAME(sys_chmod) /* 15 */ 415 .long SYMBOL_NAME(sys_lchown16) 416 .long SYMBOL_NAME(sys_ni_syscall) /* old break syscall holder */ 417 .long SYMBOL_NAME(sys_stat) 418 .long SYMBOL_NAME(sys_lseek) 419 .long SYMBOL_NAME(sys_getpid) /* 20 */ 420 .long SYMBOL_NAME(sys_mount) 421 .long SYMBOL_NAME(sys_oldumount) 422 .long SYMBOL_NAME(sys_setuid16) 423 .long SYMBOL_NAME(sys_getuid16) 424 .long SYMBOL_NAME(sys_stime) /* 25 */ 425 .long SYMBOL_NAME(sys_ptrace) 426 .long SYMBOL_NAME(sys_alarm) 427 .long SYMBOL_NAME(sys_fstat) 428 .long SYMBOL_NAME(sys_pause) 429 .long SYMBOL_NAME(sys_utime) /* 30 */ 430 .long SYMBOL_NAME(sys_ni_syscall) /* old stty syscall holder */ 431 .long SYMBOL_NAME(sys_ni_syscall) /* old gtty syscall holder */ 432 .long SYMBOL_NAME(sys_access) 433 .long SYMBOL_NAME(sys_nice) 434 .long SYMBOL_NAME(sys_ni_syscall) /* 35 */ /* old ftime syscall holder */ 435 .long SYMBOL_NAME(sys_sync) 436 .long SYMBOL_NAME(sys_kill) 437 .long SYMBOL_NAME(sys_rename) 438 .long SYMBOL_NAME(sys_mkdir) 439 .long SYMBOL_NAME(sys_rmdir) /* 40 */ 440 .long SYMBOL_NAME(sys_dup) 441 .long SYMBOL_NAME(sys_pipe) 442 .long SYMBOL_NAME(sys_times) 443 .long SYMBOL_NAME(sys_ni_syscall) /* old prof syscall holder */ 444 .long SYMBOL_NAME(sys_brk) /* 45 */ 445 .long SYMBOL_NAME(sys_setgid16) 446 .long SYMBOL_NAME(sys_getgid16) 447 .long SYMBOL_NAME(sys_signal) 448 .long SYMBOL_NAME(sys_geteuid16) 449 .long SYMBOL_NAME(sys_getegid16) /* 50 */ 450 .long SYMBOL_NAME(sys_acct) 451 .long SYMBOL_NAME(sys_umount) /* recycled never used phys() */ 452 .long SYMBOL_NAME(sys_ni_syscall) /* old lock syscall holder */ 453 .long SYMBOL_NAME(sys_ioctl) 454 .long SYMBOL_NAME(sys_fcntl) /* 55 */ 455 .long SYMBOL_NAME(sys_ni_syscall) /* old mpx syscall holder */ 456 .long SYMBOL_NAME(sys_setpgid) 457 .long SYMBOL_NAME(sys_ni_syscall) /* old ulimit syscall holder */ 458 .long SYMBOL_NAME(sys_olduname) 459 .long SYMBOL_NAME(sys_umask) /* 60 */ 460 .long SYMBOL_NAME(sys_chroot) 461 .long SYMBOL_NAME(sys_ustat) 462 .long SYMBOL_NAME(sys_dup2) 463 .long SYMBOL_NAME(sys_getppid) 464 .long SYMBOL_NAME(sys_getpgrp) /* 65 */ 465 .long SYMBOL_NAME(sys_setsid) 466 .long SYMBOL_NAME(sys_sigaction) 467 .long SYMBOL_NAME(sys_sgetmask) 468 .long SYMBOL_NAME(sys_ssetmask) 469 .long SYMBOL_NAME(sys_setreuid16) /* 70 */ 470 .long SYMBOL_NAME(sys_setregid16) 471 .long SYMBOL_NAME(sys_sigsuspend) 472 .long SYMBOL_NAME(sys_sigpending) 473 .long SYMBOL_NAME(sys_sethostname) 474 .long SYMBOL_NAME(sys_setrlimit) /* 75 */ 475 .long SYMBOL_NAME(sys_old_getrlimit) 476 .long SYMBOL_NAME(sys_getrusage) 477 .long SYMBOL_NAME(sys_gettimeofday) 478 .long SYMBOL_NAME(sys_settimeofday) 479 .long SYMBOL_NAME(sys_getgroups16) /* 80 */ 480 .long SYMBOL_NAME(sys_setgroups16) 481 .long SYMBOL_NAME(old_select) 482 .long SYMBOL_NAME(sys_symlink) 483 .long SYMBOL_NAME(sys_lstat) 484 .long SYMBOL_NAME(sys_readlink) /* 85 */ 485 .long SYMBOL_NAME(sys_uselib) 486 .long SYMBOL_NAME(sys_swapon) 487 .long SYMBOL_NAME(sys_reboot) 488 .long SYMBOL_NAME(old_readdir) 489 .long SYMBOL_NAME(old_mmap) /* 90 */ 490 .long SYMBOL_NAME(sys_munmap) 491 .long SYMBOL_NAME(sys_truncate) 492 .long SYMBOL_NAME(sys_ftruncate) 493 .long SYMBOL_NAME(sys_fchmod) 494 .long SYMBOL_NAME(sys_fchown16) /* 95 */ 495 .long SYMBOL_NAME(sys_getpriority) 496 .long SYMBOL_NAME(sys_setpriority) 497 .long SYMBOL_NAME(sys_ni_syscall) /* old profil syscall holder */ 498 .long SYMBOL_NAME(sys_statfs) 499 .long SYMBOL_NAME(sys_fstatfs) /* 100 */ 500 .long SYMBOL_NAME(sys_ioperm) 501 .long SYMBOL_NAME(sys_socketcall) 502 .long SYMBOL_NAME(sys_syslog) 503 .long SYMBOL_NAME(sys_setitimer) 504 .long SYMBOL_NAME(sys_getitimer) /* 105 */ 505 .long SYMBOL_NAME(sys_newstat) 506 .long SYMBOL_NAME(sys_newlstat) 507 .long SYMBOL_NAME(sys_newfstat) 508 .long SYMBOL_NAME(sys_uname) 509 .long SYMBOL_NAME(sys_iopl) /* 110 */ 510 .long SYMBOL_NAME(sys_vhangup) 511 .long SYMBOL_NAME(sys_ni_syscall) /* old "idle" system call */ 512 .long SYMBOL_NAME(sys_vm86old) 513 .long SYMBOL_NAME(sys_wait4) 514 .long SYMBOL_NAME(sys_swapoff) /* 115 */ 515 .long SYMBOL_NAME(sys_sysinfo) 516 .long SYMBOL_NAME(sys_ipc) 517 .long SYMBOL_NAME(sys_fsync) 518 .long SYMBOL_NAME(sys_sigreturn) 519 .long SYMBOL_NAME(sys_clone) /* 120 */ 520 .long SYMBOL_NAME(sys_setdomainname) 521 .long SYMBOL_NAME(sys_newuname) 522 .long SYMBOL_NAME(sys_modify_ldt) 523 .long SYMBOL_NAME(sys_adjtimex) 524 .long SYMBOL_NAME(sys_mprotect) /* 125 */ 525 .long SYMBOL_NAME(sys_sigprocmask) 526 .long SYMBOL_NAME(sys_create_module) 527 .long SYMBOL_NAME(sys_init_module) 528 .long SYMBOL_NAME(sys_delete_module) 529 .long SYMBOL_NAME(sys_get_kernel_syms) /* 130 */ 530 .long SYMBOL_NAME(sys_quotactl) 531 .long SYMBOL_NAME(sys_getpgid) 532 .long SYMBOL_NAME(sys_fchdir) 533 .long SYMBOL_NAME(sys_bdflush) 534 .long SYMBOL_NAME(sys_sysfs) /* 135 */ 535 .long SYMBOL_NAME(sys_personality) 536 .long SYMBOL_NAME(sys_ni_syscall) /* for afs_syscall */ 537 .long SYMBOL_NAME(sys_setfsuid16) 538 .long SYMBOL_NAME(sys_setfsgid16) 539 .long SYMBOL_NAME(sys_llseek) /* 140 */ 540 .long SYMBOL_NAME(sys_getdents) 541 .long SYMBOL_NAME(sys_select) 542 .long SYMBOL_NAME(sys_flock) 543 .long SYMBOL_NAME(sys_msync) 544 .long SYMBOL_NAME(sys_readv) /* 145 */ 545 .long SYMBOL_NAME(sys_writev) 546 .long SYMBOL_NAME(sys_getsid) 547 .long SYMBOL_NAME(sys_fdatasync) 548 .long SYMBOL_NAME(sys_sysctl) 549 .long SYMBOL_NAME(sys_mlock) /* 150 */ 550 .long SYMBOL_NAME(sys_munlock) 551 .long SYMBOL_NAME(sys_mlockall) 552 .long SYMBOL_NAME(sys_munlockall) 553 .long SYMBOL_NAME(sys_sched_setparam) 554 .long SYMBOL_NAME(sys_sched_getparam) /* 155 */ 555 .long SYMBOL_NAME(sys_sched_setscheduler) 556 .long SYMBOL_NAME(sys_sched_getscheduler) 557 .long SYMBOL_NAME(sys_sched_yield) 558 .long SYMBOL_NAME(sys_sched_get_priority_max) 559 .long SYMBOL_NAME(sys_sched_get_priority_min) /* 160 */ 560 .long SYMBOL_NAME(sys_sched_rr_get_interval) 561 .long SYMBOL_NAME(sys_nanosleep) 562 .long SYMBOL_NAME(sys_mremap) 563 .long SYMBOL_NAME(sys_setresuid16) 564 .long SYMBOL_NAME(sys_getresuid16) /* 165 */ 565 .long SYMBOL_NAME(sys_vm86) 566 .long SYMBOL_NAME(sys_query_module) 567 .long SYMBOL_NAME(sys_poll) 568 .long SYMBOL_NAME(sys_nfsservctl) 569 .long SYMBOL_NAME(sys_setresgid16) /* 170 */ 570 .long SYMBOL_NAME(sys_getresgid16) 571 .long SYMBOL_NAME(sys_prctl) 572 .long SYMBOL_NAME(sys_rt_sigreturn) 573 .long SYMBOL_NAME(sys_rt_sigaction) 574 .long SYMBOL_NAME(sys_rt_sigprocmask) /* 175 */ 575 .long SYMBOL_NAME(sys_rt_sigpending) 576 .long SYMBOL_NAME(sys_rt_sigtimedwait) 577 .long SYMBOL_NAME(sys_rt_sigqueueinfo) 578 .long SYMBOL_NAME(sys_rt_sigsuspend) 579 .long SYMBOL_NAME(sys_pread) /* 180 */ 580 .long SYMBOL_NAME(sys_pwrite) 581 .long SYMBOL_NAME(sys_chown16) 582 .long SYMBOL_NAME(sys_getcwd) 583 .long SYMBOL_NAME(sys_capget) 584 .long SYMBOL_NAME(sys_capset) /* 185 */ 585 .long SYMBOL_NAME(sys_sigaltstack) 586 .long SYMBOL_NAME(sys_sendfile) 587 .long SYMBOL_NAME(sys_ni_syscall) /* streams1 */ 588 .long SYMBOL_NAME(sys_ni_syscall) /* streams2 */ 589 .long SYMBOL_NAME(sys_vfork) /* 190 */ 590 .long SYMBOL_NAME(sys_getrlimit) 591 .long SYMBOL_NAME(sys_mmap2) 592 .long SYMBOL_NAME(sys_truncate64) 593 .long SYMBOL_NAME(sys_ftruncate64) 594 .long SYMBOL_NAME(sys_stat64) /* 195 */ 595 .long SYMBOL_NAME(sys_lstat64) 596 .long SYMBOL_NAME(sys_fstat64) 597 .long SYMBOL_NAME(sys_lchown) 598 .long SYMBOL_NAME(sys_getuid) 599 .long SYMBOL_NAME(sys_getgid) /* 200 */ 600 .long SYMBOL_NAME(sys_geteuid) 601 .long SYMBOL_NAME(sys_getegid) 602 .long SYMBOL_NAME(sys_setreuid) 603 .long SYMBOL_NAME(sys_setregid) 604 .long SYMBOL_NAME(sys_getgroups) /* 205 */ 605 .long SYMBOL_NAME(sys_setgroups) 606 .long SYMBOL_NAME(sys_fchown) 607 .long SYMBOL_NAME(sys_setresuid) 608 .long SYMBOL_NAME(sys_getresuid) 609 .long SYMBOL_NAME(sys_setresgid) /* 210 */ 610 .long SYMBOL_NAME(sys_getresgid) 611 .long SYMBOL_NAME(sys_chown) 612 .long SYMBOL_NAME(sys_setuid) 613 .long SYMBOL_NAME(sys_setgid) 614 .long SYMBOL_NAME(sys_setfsuid) /* 215 */ 615 .long SYMBOL_NAME(sys_setfsgid) 616 .long SYMBOL_NAME(sys_pivot_root) 617 .long SYMBOL_NAME(sys_mincore) 618 .long SYMBOL_NAME(sys_madvise) 619 .long SYMBOL_NAME(sys_getdents64) /* 220 */ 620 .long SYMBOL_NAME(sys_fcntl64) 621 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for TUX */ 622 .long SYMBOL_NAME(sys_ni_syscall) /* Reserved for Security */ 623 .long SYMBOL_NAME(sys_gettid) 624 .long SYMBOL_NAME(sys_readahead) /* 225 */ 625 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for setxattr */ 626 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for lsetxattr */ 627 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for fsetxattr */ 628 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for getxattr */ 629 .long SYMBOL_NAME(sys_ni_syscall) /* 230 reserved for lgetxattr */ 630 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for fgetxattr */ 631 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for listxattr */ 632 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for llistxattr */ 633 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for flistxattr */ 634 .long SYMBOL_NAME(sys_ni_syscall) /* 235 reserved for removexattr */ 635 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for lremovexattr */ 636 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for fremovexattr */ 637 638 .rept NR_syscalls-(.-sys_call_table)/4 639 .long SYMBOL_NAME(sys_ni_syscall) 640 .endr