root/arch/i386/kernel/entry.S

/* [previous][next][first][last][top][bottom][index][help] */
   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) - %fs
  34  *      28(%esp) - %gs
  35  *      2C(%esp) - orig_eax
  36  *      30(%esp) - %eip
  37  *      34(%esp) - %cs
  38  *      38(%esp) - %eflags
  39  *      3C(%esp) - %oldesp
  40  *      40(%esp) - %oldss
  41  */
  42 
  43 #include <linux/sys.h>
  44 #include <linux/linkage.h>
  45 #include <asm/segment.h>
  46 #define ASSEMBLY
  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 FS              = 0x24
  59 GS              = 0x28
  60 ORIG_EAX        = 0x2C
  61 EIP             = 0x30
  62 CS              = 0x34
  63 EFLAGS          = 0x38
  64 OLDESP          = 0x3C
  65 OLDSS           = 0x40
  66 
  67 CF_MASK         = 0x00000001
  68 IF_MASK         = 0x00000200
  69 NT_MASK         = 0x00004000
  70 VM_MASK         = 0x00020000
  71 
  72 /*
  73  * these are offsets into the task-struct.
  74  */
  75 state           =  0
  76 counter         =  4
  77 priority        =  8
  78 signal          = 12
  79 blocked         = 16
  80 flags           = 20
  81 errno           = 24
  82 dbgreg6         = 52
  83 dbgreg7         = 56
  84 exec_domain     = 60
  85 
  86 ENOSYS = 38
  87 
  88 #define SAVE_ALL \
  89         cld; \
  90         push %gs; \
  91         push %fs; \
  92         push %es; \
  93         push %ds; \
  94         pushl %eax; \
  95         pushl %ebp; \
  96         pushl %edi; \
  97         pushl %esi; \
  98         pushl %edx; \
  99         pushl %ecx; \
 100         pushl %ebx; \
 101         movl $(KERNEL_DS),%edx; \
 102         mov %dx,%ds; \
 103         mov %dx,%es; \
 104         movl $(USER_DS),%edx; \
 105         mov %dx,%fs;
 106 
 107 #ifdef  __SMP__
 108 
 109 #define GET_PROCESSOR_ID \
 110         movl SYMBOL_NAME(apic_reg), %edx; \
 111         movl 32(%edx), %eax;\
 112         movl %eax,SYMBOL_NAME(apic_retval); \
 113         shrl $24,%eax; \
 114         andb $0x0F,%al;
 115 
 116 /*
 117  *      Get the processor ID multiplied by 4
 118  */
 119 
 120 #define GET_PROCESSOR_OFFSET(x) \
 121         movl SYMBOL_NAME(apic_reg), x ; \
 122         movl 32( x ), x ; \
 123         shrl $22, x ; \
 124         andl $0x3C, x ;
 125 
 126 /* macro LEAVE_KERNEL decrements kernel_counter and resets kernel_flag and
 127    saves processor variables if zero */
 128 #define LEAVE_KERNEL \
 129         pushfl; \
 130         cli; \
 131         GET_PROCESSOR_ID \
 132         btrl $ SMP_FROM_SYSCALL,SYMBOL_NAME(smp_proc_in_lock)(,%eax,4); \
 133         decl SYMBOL_NAME(syscall_count); \
 134         decl SYMBOL_NAME(kernel_counter); \
 135         jnz 1f; \
 136         movb $(NO_PROC_ID), SYMBOL_NAME(active_kernel_processor); \
 137         lock; \
 138         btrl $0, SYMBOL_NAME(kernel_flag); \
 139 1:      popfl;
 140 
 141 /* macro ENTER_KERNEL waits for entering the kernel, increments
 142    kernel_counter, and reloads the processor variables if necessary
 143    uses : %eax, %edx (pushed and popped) 
 144 
 145    Note: We go to great pains to minimise the number of locked operations.
 146    We want to spin without locking, and lock when we attempt an update.
 147    The pentium has a MESI cache so the spin without lock will exit when
 148    another CPU write invalidates our cache, and the lock is avoided when
 149    possible so we don't play ping-pong games with the cache line.
 150 
 151 */
 152 
 153 #ifndef __SMP_PROF__
 154 
 155 #define SMP_PROF_A
 156 #define SMP_PROF_B 
 157 
 158 #else
 159 
 160 #define SMP_PROF_A movl $0,SYMBOL_NAME(smp_spins_syscall_cur)(,%eax,4);
 161 #define SMP_PROF_B incl SYMBOL_NAME(smp_spins_syscall)(,%eax,4); \
 162         incl SYMBOL_NAME(smp_spins_syscall_cur)(,%eax,4);
 163 #endif
 164 
 165 #define ENTER_KERNEL \
 166         pushl %eax; \
 167         pushl %edx; \
 168         pushfl; \
 169         cli; \
 170         GET_PROCESSOR_ID \
 171         btsl $ SMP_FROM_SYSCALL,SYMBOL_NAME(smp_proc_in_lock)(,%eax,4); \
 172         SMP_PROF_A \
 173 1:      lock; \
 174         btsl $0, SYMBOL_NAME(kernel_flag); \
 175         jnc 3f; \
 176         cmpb SYMBOL_NAME(active_kernel_processor), %al; \
 177         je 4f; \
 178 2:      SMP_PROF_B \
 179         btl %al, SYMBOL_NAME(smp_invalidate_needed); \
 180         jnc 5f; \
 181         lock; \
 182         btrl %al, SYMBOL_NAME(smp_invalidate_needed); \
 183         jnc 5f; \
 184         movl %cr3,%edx; \
 185         movl %edx,%cr3; \
 186 5:      btl $0, SYMBOL_NAME(kernel_flag); \
 187         jc 2b; \
 188         jmp 1b; \
 189 3:      movb %al, SYMBOL_NAME(active_kernel_processor); \
 190 4:      incl SYMBOL_NAME(kernel_counter); \
 191         incl SYMBOL_NAME(syscall_count); \
 192         popfl; \
 193         popl %edx; \
 194         popl %eax;
 195 
 196 
 197 #define RESTORE_ALL \
 198         cmpw $(KERNEL_CS),CS(%esp); \
 199         je 1f;   \
 200         GET_PROCESSOR_OFFSET(%edx) \
 201         movl SYMBOL_NAME(current_set)(,%edx), %eax ; ; \
 202         movl dbgreg7(%eax),%ebx; \
 203         movl %ebx,%db7; \
 204 1:      LEAVE_KERNEL \
 205         popl %ebx; \
 206         popl %ecx; \
 207         popl %edx; \
 208         popl %esi; \
 209         popl %edi; \
 210         popl %ebp; \
 211         popl %eax; \
 212         pop %ds; \
 213         pop %es; \
 214         pop %fs; \
 215         pop %gs; \
 216         addl $4,%esp; \
 217         iret
 218 
 219 #else
 220 
 221 #define RESTORE_ALL \
 222         cmpw $(KERNEL_CS),CS(%esp); \
 223         je 1f;   \
 224         movl SYMBOL_NAME(current_set),%eax; \
 225         movl dbgreg7(%eax),%ebx; \
 226         movl %ebx,%db7; \
 227 1:      \
 228         popl %ebx; \
 229         popl %ecx; \
 230         popl %edx; \
 231         popl %esi; \
 232         popl %edi; \
 233         popl %ebp; \
 234         popl %eax; \
 235         pop %ds; \
 236         pop %es; \
 237         pop %fs; \
 238         pop %gs; \
 239         addl $4,%esp; \
 240         iret
 241 #endif
 242 
 243 
 244 ENTRY(lcall7)
 245         pushfl                  # We get a different stack layout with call gates,
 246         pushl %eax              # which has to be cleaned up later..
 247         SAVE_ALL
 248 #ifdef __SMP__
 249         ENTER_KERNEL
 250 #endif
 251         movl EIP(%esp),%eax     # due to call gates, this is eflags, not eip..
 252         movl CS(%esp),%edx      # this is eip..
 253         movl EFLAGS(%esp),%ecx  # and this is cs..
 254         movl %eax,EFLAGS(%esp)  #
 255         movl %edx,EIP(%esp)     # Now we move them to their "normal" places
 256         movl %ecx,CS(%esp)      #
 257         movl %esp,%eax
 258 #ifdef __SMP__
 259         GET_PROCESSOR_OFFSET(%edx)      # Processor offset into edx
 260         movl SYMBOL_NAME(current_set)(,%edx),%edx
 261 #else
 262         movl SYMBOL_NAME(current_set),%edx
 263 #endif
 264         pushl %eax
 265         movl exec_domain(%edx),%edx     # Get the execution domain
 266         movl 4(%edx),%edx       # Get the lcall7 handler for the domain
 267         call *%edx
 268         popl %eax
 269         jmp ret_from_sys_call
 270 
 271         ALIGN
 272 handle_bottom_half:
 273         pushfl
 274         incl SYMBOL_NAME(intr_count)
 275         sti
 276         call SYMBOL_NAME(do_bottom_half)
 277         popfl
 278         decl SYMBOL_NAME(intr_count)
 279         jmp 9f
 280         ALIGN
 281 reschedule:
 282         pushl $ret_from_sys_call
 283         jmp SYMBOL_NAME(schedule)    # test
 284 
 285 ENTRY(system_call)
 286         pushl %eax                      # save orig_eax
 287         SAVE_ALL
 288 #ifdef __SMP__
 289         ENTER_KERNEL
 290 #endif
 291         movl $-ENOSYS,EAX(%esp)
 292         cmpl $(NR_syscalls),%eax
 293         jae ret_from_sys_call
 294         movl SYMBOL_NAME(sys_call_table)(,%eax,4),%eax
 295         testl %eax,%eax
 296         je ret_from_sys_call
 297 #ifdef __SMP__
 298         GET_PROCESSOR_OFFSET(%edx)
 299         movl SYMBOL_NAME(current_set)(,%edx),%ebx
 300 #else
 301         movl SYMBOL_NAME(current_set),%ebx
 302 #endif
 303         andl $~CF_MASK,EFLAGS(%esp)     # clear carry - assume no errors
 304         movl $0,errno(%ebx)
 305         movl %db6,%edx
 306         movl %edx,dbgreg6(%ebx)  # save current hardware debugging status
 307         testb $0x20,flags(%ebx)         # PF_TRACESYS
 308         jne 1f
 309         call *%eax
 310         movl %eax,EAX(%esp)             # save the return value
 311         movl errno(%ebx),%edx
 312         negl %edx
 313         je ret_from_sys_call
 314         movl %edx,EAX(%esp)
 315         orl $(CF_MASK),EFLAGS(%esp)     # set carry to indicate error
 316         jmp ret_from_sys_call
 317         ALIGN
 318 1:      call SYMBOL_NAME(syscall_trace)
 319         movl ORIG_EAX(%esp),%eax
 320         call SYMBOL_NAME(sys_call_table)(,%eax,4)
 321         movl %eax,EAX(%esp)             # save the return value
 322 #ifdef __SMP__
 323         GET_PROCESSOR_OFFSET(%eax)
 324         movl SYMBOL_NAME(current_set)(,%eax),%eax
 325 #else
 326         movl SYMBOL_NAME(current_set),%eax
 327 #endif
 328         movl errno(%eax),%edx
 329         negl %edx
 330         je 1f
 331         movl %edx,EAX(%esp)
 332         orl $(CF_MASK),EFLAGS(%esp)     # set carry to indicate error
 333 1:      call SYMBOL_NAME(syscall_trace)
 334 
 335         ALIGN
 336         .globl ret_from_sys_call
 337 ret_from_sys_call:
 338         cmpl $0,SYMBOL_NAME(intr_count)
 339         jne 2f
 340 9:      movl SYMBOL_NAME(bh_mask),%eax
 341         andl SYMBOL_NAME(bh_active),%eax
 342         jne handle_bottom_half
 343         movl EFLAGS(%esp),%eax          # check VM86 flag: CS/SS are
 344         testl $(VM_MASK),%eax           # different then
 345         jne 1f
 346         cmpw $(KERNEL_CS),CS(%esp)      # was old code segment supervisor ?
 347         je 2f
 348 1:      sti
 349         orl $(IF_MASK),%eax             # these just try to make sure
 350         andl $~NT_MASK,%eax             # the program doesn't do anything
 351         movl %eax,EFLAGS(%esp)          # stupid
 352         cmpl $0,SYMBOL_NAME(need_resched)
 353         jne reschedule
 354 #ifdef __SMP__
 355         GET_PROCESSOR_OFFSET(%eax)
 356         movl SYMBOL_NAME(current_set)(,%eax), %eax
 357 #else
 358         movl SYMBOL_NAME(current_set),%eax
 359 #endif
 360         cmpl SYMBOL_NAME(task),%eax     # task[0] cannot have signals
 361         je 2f
 362         movl blocked(%eax),%ecx
 363         movl %ecx,%ebx                  # save blocked in %ebx for signal handling
 364         notl %ecx
 365         andl signal(%eax),%ecx
 366         jne signal_return
 367 2:      RESTORE_ALL
 368         ALIGN
 369 signal_return:
 370         movl %esp,%ecx
 371         pushl %ecx
 372         testl $(VM_MASK),EFLAGS(%ecx)
 373         jne v86_signal_return
 374         pushl %ebx
 375         call SYMBOL_NAME(do_signal)
 376         popl %ebx
 377         popl %ebx
 378         RESTORE_ALL
 379         ALIGN
 380 v86_signal_return:
 381         call SYMBOL_NAME(save_v86_state)
 382         movl %eax,%esp
 383         pushl %eax
 384         pushl %ebx
 385         call SYMBOL_NAME(do_signal)
 386         popl %ebx
 387         popl %ebx
 388         RESTORE_ALL
 389 
 390 ENTRY(divide_error)
 391         pushl $0                # no error code
 392         pushl $ SYMBOL_NAME(do_divide_error)
 393         ALIGN
 394 error_code:
 395         push %fs
 396         push %es
 397         push %ds
 398         pushl %eax
 399         pushl %ebp
 400         pushl %edi
 401         pushl %esi
 402         pushl %edx
 403         pushl %ecx
 404         pushl %ebx
 405         movl $0,%eax
 406         movl %eax,%db7                  # disable hardware debugging...
 407         cld
 408         movl $-1, %eax
 409         xchgl %eax, ORIG_EAX(%esp)      # orig_eax (get the error code. )
 410         xorl %ebx,%ebx                  # zero ebx
 411         mov %gs,%bx                     # get the lower order bits of gs
 412         xchgl %ebx, GS(%esp)            # get the address and save gs.
 413         pushl %eax                      # push the error code
 414         lea 4(%esp),%edx
 415         pushl %edx
 416         movl $(KERNEL_DS),%edx
 417         mov %dx,%ds
 418         mov %dx,%es
 419         movl $(USER_DS),%edx
 420         mov %dx,%fs
 421 #ifdef __SMP__
 422         ENTER_KERNEL
 423 #endif
 424         pushl %eax
 425 #ifdef __SMP__
 426         GET_PROCESSOR_OFFSET(%eax)
 427         movl SYMBOL_NAME(current_set)(,%eax), %eax
 428 #else
 429         movl SYMBOL_NAME(current_set),%eax
 430 #endif
 431         movl %db6,%edx
 432         movl %edx,dbgreg6(%eax)  # save current hardware debugging status
 433         popl %eax
 434         call *%ebx
 435         addl $8,%esp
 436         jmp ret_from_sys_call
 437 
 438 ENTRY(coprocessor_error)
 439         pushl $0
 440         pushl $ SYMBOL_NAME(do_coprocessor_error)
 441         jmp error_code
 442 
 443 ENTRY(device_not_available)
 444         pushl $-1               # mark this as an int
 445         SAVE_ALL
 446 #ifdef __SMP__
 447         ENTER_KERNEL
 448 #endif
 449         pushl $ret_from_sys_call
 450         movl %cr0,%eax
 451         testl $0x4,%eax                 # EM (math emulation bit)
 452         je SYMBOL_NAME(math_state_restore)
 453         pushl $0                # temporary storage for ORIG_EIP
 454         call  SYMBOL_NAME(math_emulate)
 455         addl $4,%esp
 456         ret
 457 
 458 ENTRY(debug)
 459         pushl $0
 460         pushl $ SYMBOL_NAME(do_debug)
 461         jmp error_code
 462 
 463 ENTRY(nmi)
 464         pushl $0
 465         pushl $ SYMBOL_NAME(do_nmi)
 466         jmp error_code
 467 
 468 ENTRY(int3)
 469         pushl $0
 470         pushl $ SYMBOL_NAME(do_int3)
 471         jmp error_code
 472 
 473 ENTRY(overflow)
 474         pushl $0
 475         pushl $ SYMBOL_NAME(do_overflow)
 476         jmp error_code
 477 
 478 ENTRY(bounds)
 479         pushl $0
 480         pushl $ SYMBOL_NAME(do_bounds)
 481         jmp error_code
 482 
 483 ENTRY(invalid_op)
 484         pushl $0
 485         pushl $ SYMBOL_NAME(do_invalid_op)
 486         jmp error_code
 487 
 488 ENTRY(coprocessor_segment_overrun)
 489         pushl $0
 490         pushl $ SYMBOL_NAME(do_coprocessor_segment_overrun)
 491         jmp error_code
 492 
 493 ENTRY(reserved)
 494         pushl $0
 495         pushl $ SYMBOL_NAME(do_reserved)
 496         jmp error_code
 497 
 498 ENTRY(double_fault)
 499         pushl $ SYMBOL_NAME(do_double_fault)
 500         jmp error_code
 501 
 502 ENTRY(invalid_TSS)
 503         pushl $ SYMBOL_NAME(do_invalid_TSS)
 504         jmp error_code
 505 
 506 ENTRY(segment_not_present)
 507         pushl $ SYMBOL_NAME(do_segment_not_present)
 508         jmp error_code
 509 
 510 ENTRY(stack_segment)
 511         pushl $ SYMBOL_NAME(do_stack_segment)
 512         jmp error_code
 513 
 514 ENTRY(general_protection)
 515         pushl $ SYMBOL_NAME(do_general_protection)
 516         jmp error_code
 517 
 518 ENTRY(alignment_check)
 519         pushl $ SYMBOL_NAME(do_alignment_check)
 520         jmp error_code
 521 
 522 ENTRY(page_fault)
 523         pushl $ SYMBOL_NAME(do_page_fault)
 524         jmp error_code
 525 
 526 .data
 527 ENTRY(sys_call_table)
 528         .long SYMBOL_NAME(sys_setup)            /* 0 */
 529         .long SYMBOL_NAME(sys_exit)
 530         .long SYMBOL_NAME(sys_fork)
 531         .long SYMBOL_NAME(sys_read)
 532         .long SYMBOL_NAME(sys_write)
 533         .long SYMBOL_NAME(sys_open)             /* 5 */
 534         .long SYMBOL_NAME(sys_close)
 535         .long SYMBOL_NAME(sys_waitpid)
 536         .long SYMBOL_NAME(sys_creat)
 537         .long SYMBOL_NAME(sys_link)
 538         .long SYMBOL_NAME(sys_unlink)           /* 10 */
 539         .long SYMBOL_NAME(sys_execve)
 540         .long SYMBOL_NAME(sys_chdir)
 541         .long SYMBOL_NAME(sys_time)
 542         .long SYMBOL_NAME(sys_mknod)
 543         .long SYMBOL_NAME(sys_chmod)            /* 15 */
 544         .long SYMBOL_NAME(sys_chown)
 545         .long SYMBOL_NAME(sys_break)
 546         .long SYMBOL_NAME(sys_stat)
 547         .long SYMBOL_NAME(sys_lseek)
 548         .long SYMBOL_NAME(sys_getpid)           /* 20 */
 549         .long SYMBOL_NAME(sys_mount)
 550         .long SYMBOL_NAME(sys_umount)
 551         .long SYMBOL_NAME(sys_setuid)
 552         .long SYMBOL_NAME(sys_getuid)
 553         .long SYMBOL_NAME(sys_stime)            /* 25 */
 554         .long SYMBOL_NAME(sys_ptrace)
 555         .long SYMBOL_NAME(sys_alarm)
 556         .long SYMBOL_NAME(sys_fstat)
 557         .long SYMBOL_NAME(sys_pause)
 558         .long SYMBOL_NAME(sys_utime)            /* 30 */
 559         .long SYMBOL_NAME(sys_stty)
 560         .long SYMBOL_NAME(sys_gtty)
 561         .long SYMBOL_NAME(sys_access)
 562         .long SYMBOL_NAME(sys_nice)
 563         .long SYMBOL_NAME(sys_ftime)            /* 35 */
 564         .long SYMBOL_NAME(sys_sync)
 565         .long SYMBOL_NAME(sys_kill)
 566         .long SYMBOL_NAME(sys_rename)
 567         .long SYMBOL_NAME(sys_mkdir)
 568         .long SYMBOL_NAME(sys_rmdir)            /* 40 */
 569         .long SYMBOL_NAME(sys_dup)
 570         .long SYMBOL_NAME(sys_pipe)
 571         .long SYMBOL_NAME(sys_times)
 572         .long SYMBOL_NAME(sys_prof)
 573         .long SYMBOL_NAME(sys_brk)              /* 45 */
 574         .long SYMBOL_NAME(sys_setgid)
 575         .long SYMBOL_NAME(sys_getgid)
 576         .long SYMBOL_NAME(sys_signal)
 577         .long SYMBOL_NAME(sys_geteuid)
 578         .long SYMBOL_NAME(sys_getegid)          /* 50 */
 579         .long SYMBOL_NAME(sys_acct)
 580         .long SYMBOL_NAME(sys_phys)
 581         .long SYMBOL_NAME(sys_lock)
 582         .long SYMBOL_NAME(sys_ioctl)
 583         .long SYMBOL_NAME(sys_fcntl)            /* 55 */
 584         .long SYMBOL_NAME(sys_mpx)
 585         .long SYMBOL_NAME(sys_setpgid)
 586         .long SYMBOL_NAME(sys_ulimit)
 587         .long SYMBOL_NAME(sys_olduname)
 588         .long SYMBOL_NAME(sys_umask)            /* 60 */
 589         .long SYMBOL_NAME(sys_chroot)
 590         .long SYMBOL_NAME(sys_ustat)
 591         .long SYMBOL_NAME(sys_dup2)
 592         .long SYMBOL_NAME(sys_getppid)
 593         .long SYMBOL_NAME(sys_getpgrp)          /* 65 */
 594         .long SYMBOL_NAME(sys_setsid)
 595         .long SYMBOL_NAME(sys_sigaction)
 596         .long SYMBOL_NAME(sys_sgetmask)
 597         .long SYMBOL_NAME(sys_ssetmask)
 598         .long SYMBOL_NAME(sys_setreuid)         /* 70 */
 599         .long SYMBOL_NAME(sys_setregid)
 600         .long SYMBOL_NAME(sys_sigsuspend)
 601         .long SYMBOL_NAME(sys_sigpending)
 602         .long SYMBOL_NAME(sys_sethostname)
 603         .long SYMBOL_NAME(sys_setrlimit)        /* 75 */
 604         .long SYMBOL_NAME(sys_getrlimit)
 605         .long SYMBOL_NAME(sys_getrusage)
 606         .long SYMBOL_NAME(sys_gettimeofday)
 607         .long SYMBOL_NAME(sys_settimeofday)
 608         .long SYMBOL_NAME(sys_getgroups)        /* 80 */
 609         .long SYMBOL_NAME(sys_setgroups)
 610         .long SYMBOL_NAME(old_select)
 611         .long SYMBOL_NAME(sys_symlink)
 612         .long SYMBOL_NAME(sys_lstat)
 613         .long SYMBOL_NAME(sys_readlink)         /* 85 */
 614         .long SYMBOL_NAME(sys_uselib)
 615         .long SYMBOL_NAME(sys_swapon)
 616         .long SYMBOL_NAME(sys_reboot)
 617         .long SYMBOL_NAME(old_readdir)
 618         .long SYMBOL_NAME(old_mmap)             /* 90 */
 619         .long SYMBOL_NAME(sys_munmap)
 620         .long SYMBOL_NAME(sys_truncate)
 621         .long SYMBOL_NAME(sys_ftruncate)
 622         .long SYMBOL_NAME(sys_fchmod)
 623         .long SYMBOL_NAME(sys_fchown)           /* 95 */
 624         .long SYMBOL_NAME(sys_getpriority)
 625         .long SYMBOL_NAME(sys_setpriority)
 626         .long SYMBOL_NAME(sys_profil)
 627         .long SYMBOL_NAME(sys_statfs)
 628         .long SYMBOL_NAME(sys_fstatfs)          /* 100 */
 629         .long SYMBOL_NAME(sys_ioperm)
 630         .long SYMBOL_NAME(sys_socketcall)
 631         .long SYMBOL_NAME(sys_syslog)
 632         .long SYMBOL_NAME(sys_setitimer)
 633         .long SYMBOL_NAME(sys_getitimer)        /* 105 */
 634         .long SYMBOL_NAME(sys_newstat)
 635         .long SYMBOL_NAME(sys_newlstat)
 636         .long SYMBOL_NAME(sys_newfstat)
 637         .long SYMBOL_NAME(sys_uname)
 638         .long SYMBOL_NAME(sys_iopl)             /* 110 */
 639         .long SYMBOL_NAME(sys_vhangup)
 640         .long SYMBOL_NAME(sys_idle)
 641         .long SYMBOL_NAME(sys_vm86)
 642         .long SYMBOL_NAME(sys_wait4)
 643         .long SYMBOL_NAME(sys_swapoff)          /* 115 */
 644         .long SYMBOL_NAME(sys_sysinfo)
 645         .long SYMBOL_NAME(sys_ipc)
 646         .long SYMBOL_NAME(sys_fsync)
 647         .long SYMBOL_NAME(sys_sigreturn)
 648         .long SYMBOL_NAME(sys_clone)            /* 120 */
 649         .long SYMBOL_NAME(sys_setdomainname)
 650         .long SYMBOL_NAME(sys_newuname)
 651         .long SYMBOL_NAME(sys_modify_ldt)
 652         .long SYMBOL_NAME(sys_adjtimex)
 653         .long SYMBOL_NAME(sys_mprotect)         /* 125 */
 654         .long SYMBOL_NAME(sys_sigprocmask)
 655         .long SYMBOL_NAME(sys_create_module)
 656         .long SYMBOL_NAME(sys_init_module)
 657         .long SYMBOL_NAME(sys_delete_module)
 658         .long SYMBOL_NAME(sys_get_kernel_syms)  /* 130 */
 659         .long SYMBOL_NAME(sys_quotactl)
 660         .long SYMBOL_NAME(sys_getpgid)
 661         .long SYMBOL_NAME(sys_fchdir)
 662         .long SYMBOL_NAME(sys_bdflush)
 663         .long SYMBOL_NAME(sys_sysfs)            /* 135 */
 664         .long SYMBOL_NAME(sys_personality)
 665         .long 0                                 /* for afs_syscall */
 666         .long SYMBOL_NAME(sys_setfsuid)
 667         .long SYMBOL_NAME(sys_setfsgid)
 668         .long SYMBOL_NAME(sys_llseek)           /* 140 */
 669         .long SYMBOL_NAME(sys_getdents)
 670         .long SYMBOL_NAME(sys_select)
 671         .long SYMBOL_NAME(sys_flock)
 672         .long SYMBOL_NAME(sys_msync)
 673         .long SYMBOL_NAME(sys_readv)            /* 145 */
 674         .long SYMBOL_NAME(sys_writev)
 675         .long SYMBOL_NAME(sys_getsid)
 676         .long SYMBOL_NAME(sys_fdatasync)
 677         .long SYMBOL_NAME(sys_sysctl)
 678         .long SYMBOL_NAME(sys_mlock)            /* 150 */
 679         .long SYMBOL_NAME(sys_munlock)
 680         .long SYMBOL_NAME(sys_mlockall)
 681         .long SYMBOL_NAME(sys_munlockall)
 682         .long SYMBOL_NAME(sys_sched_setparam)
 683         .long SYMBOL_NAME(sys_sched_getparam)   /* 155 */
 684         .long SYMBOL_NAME(sys_sched_setscheduler)
 685         .long SYMBOL_NAME(sys_sched_getscheduler)
 686         .long SYMBOL_NAME(sys_sched_yield)
 687         .long SYMBOL_NAME(sys_sched_get_priority_max)
 688         .long SYMBOL_NAME(sys_sched_get_priority_min)  /* 160 */
 689         .long SYMBOL_NAME(sys_sched_rr_get_interval)
 690         .long SYMBOL_NAME(sys_nanosleep)
 691         .long SYMBOL_NAME(sys_mremap)
 692         .space (NR_syscalls-163)*4

/* [previous][next][first][last][top][bottom][index][help] */