linux-old/arch/i386/kernel/entry.S History
<<
>>
Prefs
   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
  49EBX             = 0x00
  50ECX             = 0x04
  51EDX             = 0x08
  52ESI             = 0x0C
  53EDI             = 0x10
  54EBP             = 0x14
  55EAX             = 0x18
  56DS              = 0x1C
  57ES              = 0x20
  58ORIG_EAX        = 0x24
  59EIP             = 0x28
  60CS              = 0x2C
  61EFLAGS          = 0x30
  62OLDESP          = 0x34
  63OLDSS           = 0x38
  64
  65CF_MASK         = 0x00000001
  66TF_MASK         = 0x00000100
  67IF_MASK         = 0x00000200
  68DF_MASK         = 0x00000400
  69NT_MASK         = 0x00004000
  70VM_MASK         = 0x00020000
  71
  72/*
  73 * these are offsets into the task-struct.
  74 */
  75state           =  0
  76flags           =  4
  77sigpending      =  8
  78addr_limit      = 12
  79exec_domain     = 16
  80need_resched    = 20
  81tsk_ptrace      = 24
  82processor       = 52
  83
  84ENOSYS = 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;      \
 1101:      popl %ds;       \
 1112:      popl %es;       \
 112        addl $4,%esp;   \
 1133:      iret;           \
 114.section .fixup,"ax";   \
 1154:      movl $0,(%esp); \
 116        jmp 1b;         \
 1175:      movl $0,(%esp); \
 118        jmp 2b;         \
 1196:      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
 137ENTRY(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
 161ENTRY(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
 186ENTRY(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.
 200 */
 201
 202ENTRY(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
 212ENTRY(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
 218restore_all:
 219        RESTORE_ALL
 220
 221        ALIGN
 222signal_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
 232v86_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
 240tracesys:
 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
 248tracesys_exit:
 249        call SYMBOL_NAME(syscall_trace)
 250        jmp ret_from_sys_call
 251badsys:
 252        movl $-ENOSYS,EAX(%esp)
 253        jmp ret_from_sys_call
 254
 255        ALIGN
 256ENTRY(ret_from_intr)
 257        GET_CURRENT(%ebx)
 258ret_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
 266reschedule:
 267        call SYMBOL_NAME(schedule)    # test
 268        jmp ret_from_sys_call
 269
 270ENTRY(divide_error)
 271        pushl $0                # no error code
 272        pushl $ SYMBOL_NAME(do_divide_error)
 273        ALIGN
 274error_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
 302ENTRY(coprocessor_error)
 303        pushl $0
 304        pushl $ SYMBOL_NAME(do_coprocessor_error)
 305        jmp error_code
 306
 307ENTRY(simd_coprocessor_error)
 308        pushl $0
 309        pushl $ SYMBOL_NAME(do_simd_coprocessor_error)
 310        jmp error_code
 311
 312ENTRY(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
 321device_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
 327ENTRY(debug)
 328        pushl $0
 329        pushl $ SYMBOL_NAME(do_debug)
 330        jmp error_code
 331
 332ENTRY(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
 342ENTRY(int3)
 343        pushl $0
 344        pushl $ SYMBOL_NAME(do_int3)
 345        jmp error_code
 346
 347ENTRY(overflow)
 348        pushl $0
 349        pushl $ SYMBOL_NAME(do_overflow)
 350        jmp error_code
 351
 352ENTRY(bounds)
 353        pushl $0
 354        pushl $ SYMBOL_NAME(do_bounds)
 355        jmp error_code
 356
 357ENTRY(invalid_op)
 358        pushl $0
 359        pushl $ SYMBOL_NAME(do_invalid_op)
 360        jmp error_code
 361
 362ENTRY(coprocessor_segment_overrun)
 363        pushl $0
 364        pushl $ SYMBOL_NAME(do_coprocessor_segment_overrun)
 365        jmp error_code
 366
 367ENTRY(double_fault)
 368        pushl $ SYMBOL_NAME(do_double_fault)
 369        jmp error_code
 370
 371ENTRY(invalid_TSS)
 372        pushl $ SYMBOL_NAME(do_invalid_TSS)
 373        jmp error_code
 374
 375ENTRY(segment_not_present)
 376        pushl $ SYMBOL_NAME(do_segment_not_present)
 377        jmp error_code
 378
 379ENTRY(stack_segment)
 380        pushl $ SYMBOL_NAME(do_stack_segment)
 381        jmp error_code
 382
 383ENTRY(general_protection)
 384        pushl $ SYMBOL_NAME(do_general_protection)
 385        jmp error_code
 386
 387ENTRY(alignment_check)
 388        pushl $ SYMBOL_NAME(do_alignment_check)
 389        jmp error_code
 390
 391ENTRY(page_fault)
 392        pushl $ SYMBOL_NAME(do_page_fault)
 393        jmp error_code
 394
 395ENTRY(machine_check)
 396        pushl $0
 397        pushl $ SYMBOL_NAME(do_machine_check)
 398        jmp error_code
 399
 400ENTRY(spurious_interrupt_bug)
 401        pushl $0
 402        pushl $ SYMBOL_NAME(do_spurious_interrupt_bug)
 403        jmp error_code
 404
 405.data
 406ENTRY(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
 670
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.