对entry-common.S和call.S的部分理解1 - 摩斯电码
内核版本: linux-2.6.30.4
文件:
linux-2.6.30.4/arch/arm/kernel/entry-common.S
linux-2.6.30.4/arch/arm/kernel/calls.S
calls.S:
   1: /*
    2:  *  linux/arch/arm/kernel/calls.S
    3:  *
    4:  *  Copyright (C) 1995-2005 Russell King
    5:  *
    6:  * This program is free software; you can redistribute it and/or modify
    7:  * it under the terms of the GNU General Public License version 2 as
    8:  * published by the Free Software Foundation.
    9:  *
   10:  *  This file is included thrice in entry-common.S
   11:  */
   12: /* 0 */        CALL(sys_restart_syscall)
   13:         CALL(sys_exit)
   14:         CALL(sys_fork_wrapper)
   15:         CALL(sys_read)
   16:         CALL(sys_write)
   17: /* 5 */        CALL(sys_open)
   18:         CALL(sys_close)
   19:         CALL(sys_ni_syscall)        /* was sys_waitpid */
   20:         CALL(sys_creat)
   21:         CALL(sys_link)
   22: /* 10 */    CALL(sys_unlink)
   23:         CALL(sys_execve_wrapper)
   24:         CALL(sys_chdir)
   25:         CALL(OBSOLETE(sys_time))    /* used by libc4 */
   26:         CALL(sys_mknod)
   27: /* 15 */    CALL(sys_chmod)
   28:         CALL(sys_lchown16)
   29:         CALL(sys_ni_syscall)        /* was sys_break */
   30:         CALL(sys_ni_syscall)        /* was sys_stat */
   31:         CALL(sys_lseek)
   32: /* 20 */    CALL(sys_getpid)
   33:         CALL(sys_mount)
   34:         CALL(OBSOLETE(sys_oldumount))    /* used by libc4 */
   35:         CALL(sys_setuid16)
   36:         CALL(sys_getuid16)
   37: /* 25 */    CALL(OBSOLETE(sys_stime))
   38:         CALL(sys_ptrace)
   39:         CALL(OBSOLETE(sys_alarm))    /* used by libc4 */
   40:         CALL(sys_ni_syscall)        /* was sys_fstat */
   41:         CALL(sys_pause)
   42: /* 30 */    CALL(OBSOLETE(sys_utime))    /* used by libc4 */
   43:         CALL(sys_ni_syscall)        /* was sys_stty */
   44:         CALL(sys_ni_syscall)        /* was sys_getty */
   45:         CALL(sys_access)
   46:         CALL(sys_nice)
   47: /* 35 */    CALL(sys_ni_syscall)        /* was sys_ftime */
   48:         CALL(sys_sync)
   49:         CALL(sys_kill)
   50:         CALL(sys_rename)
   51:         CALL(sys_mkdir)
   52: /* 40 */    CALL(sys_rmdir)
   53:         CALL(sys_dup)
   54:         CALL(sys_pipe)
   55:         CALL(sys_times)
   56:         CALL(sys_ni_syscall)        /* was sys_prof */
   57: /* 45 */    CALL(sys_brk)
   58:         CALL(sys_setgid16)
   59:         CALL(sys_getgid16)
   60:         CALL(sys_ni_syscall)        /* was sys_signal */
   61:         CALL(sys_geteuid16)
   62: /* 50 */    CALL(sys_getegid16)
   63:         CALL(sys_acct)
   64:         CALL(sys_umount)
   65:         CALL(sys_ni_syscall)        /* was sys_lock */
   66:         CALL(sys_ioctl)
   67: /* 55 */    CALL(sys_fcntl)
   68:         CALL(sys_ni_syscall)        /* was sys_mpx */
   69:         CALL(sys_setpgid)
   70:         CALL(sys_ni_syscall)        /* was sys_ulimit */
   71:         CALL(sys_ni_syscall)        /* was sys_olduname */
   72: /* 60 */    CALL(sys_umask)
   73:         CALL(sys_chroot)
   74:         CALL(sys_ustat)
   75:         CALL(sys_dup2)
   76:         CALL(sys_getppid)
   77: /* 65 */    CALL(sys_getpgrp)
   78:         CALL(sys_setsid)
   79:         CALL(sys_sigaction)
   80:         CALL(sys_ni_syscall)        /* was sys_sgetmask */
   81:         CALL(sys_ni_syscall)        /* was sys_ssetmask */
   82: /* 70 */    CALL(sys_setreuid16)
   83:         CALL(sys_setregid16)
   84:         CALL(sys_sigsuspend_wrapper)
   85:         CALL(sys_sigpending)
   86:         CALL(sys_sethostname)
   87: /* 75 */    CALL(sys_setrlimit)
   88:         CALL(OBSOLETE(sys_old_getrlimit)) /* used by libc4 */
   89:         CALL(sys_getrusage)
   90:         CALL(sys_gettimeofday)
   91:         CALL(sys_settimeofday)
   92: /* 80 */    CALL(sys_getgroups16)
   93:         CALL(sys_setgroups16)
   94:         CALL(OBSOLETE(old_select))    /* used by libc4 */
   95:         CALL(sys_symlink)
   96:         CALL(sys_ni_syscall)        /* was sys_lstat */
   97: /* 85 */    CALL(sys_readlink)
   98:         CALL(sys_uselib)
   99:         CALL(sys_swapon)
  100:         CALL(sys_reboot)
  101:         CALL(OBSOLETE(sys_old_readdir))    /* used by libc4 */
  102: /* 90 */    CALL(OBSOLETE(old_mmap))    /* used by libc4 */
  103:         CALL(sys_munmap)
  104:         CALL(sys_truncate)
  105:         CALL(sys_ftruncate)
  106:         CALL(sys_fchmod)
  107: /* 95 */    CALL(sys_fchown16)
  108:         CALL(sys_getpriority)
  109:         CALL(sys_setpriority)
  110:         CALL(sys_ni_syscall)        /* was sys_profil */
  111:         CALL(sys_statfs)
  112: /* 100 */    CALL(sys_fstatfs)
  113:         CALL(sys_ni_syscall)        /* sys_ioperm */
  114:         CALL(OBSOLETE(ABI(sys_socketcall, sys_oabi_socketcall)))
  115:         CALL(sys_syslog)
  116:         CALL(sys_setitimer)
  117: /* 105 */    CALL(sys_getitimer)
  118:         CALL(sys_newstat)
  119:         CALL(sys_newlstat)
  120:         CALL(sys_newfstat)
  121:         CALL(sys_ni_syscall)        /* was sys_uname */
  122: /* 110 */    CALL(sys_ni_syscall)        /* was sys_iopl */
  123:         CALL(sys_vhangup)
  124:         CALL(sys_ni_syscall)
  125:         CALL(OBSOLETE(sys_syscall))    /* call a syscall */
  126:         CALL(sys_wait4)
  127: /* 115 */    CALL(sys_swapoff)
  128:         CALL(sys_sysinfo)
  129:         CALL(OBSOLETE(ABI(sys_ipc, sys_oabi_ipc)))
  130:         CALL(sys_fsync)
  131:         CALL(sys_sigreturn_wrapper)
  132: /* 120 */    CALL(sys_clone_wrapper)
  133:         CALL(sys_setdomainname)
  134:         CALL(sys_newuname)
  135:         CALL(sys_ni_syscall)        /* modify_ldt */
  136:         CALL(sys_adjtimex)
  137: /* 125 */    CALL(sys_mprotect)
  138:         CALL(sys_sigprocmask)
  139:         CALL(sys_ni_syscall)        /* was sys_create_module */
  140:         CALL(sys_init_module)
  141:         CALL(sys_delete_module)
  142: /* 130 */    CALL(sys_ni_syscall)        /* was sys_get_kernel_syms */
  143:         CALL(sys_quotactl)
  144:         CALL(sys_getpgid)
  145:         CALL(sys_fchdir)
  146:         CALL(sys_bdflush)
  147: /* 135 */    CALL(sys_sysfs)
  148:         CALL(sys_personality)
  149:         CALL(sys_ni_syscall)        /* reserved for afs_syscall */
  150:         CALL(sys_setfsuid16)
  151:         CALL(sys_setfsgid16)
  152: /* 140 */    CALL(sys_llseek)
  153:         CALL(sys_getdents)
  154:         CALL(sys_select)
  155:         CALL(sys_flock)
  156:         CALL(sys_msync)
  157: /* 145 */    CALL(sys_readv)
  158:         CALL(sys_writev)
  159:         CALL(sys_getsid)
  160:         CALL(sys_fdatasync)
  161:         CALL(sys_sysctl)
  162: /* 150 */    CALL(sys_mlock)
  163:         CALL(sys_munlock)
  164:         CALL(sys_mlockall)
  165:         CALL(sys_munlockall)
  166:         CALL(sys_sched_setparam)
  167: /* 155 */    CALL(sys_sched_getparam)
  168:         CALL(sys_sched_setscheduler)
  169:         CALL(sys_sched_getscheduler)
  170:         CALL(sys_sched_yield)
  171:         CALL(sys_sched_get_priority_max)
  172: /* 160 */    CALL(sys_sched_get_priority_min)
  173:         CALL(sys_sched_rr_get_interval)
  174:         CALL(sys_nanosleep)
  175:         CALL(sys_arm_mremap)
  176:         CALL(sys_setresuid16)
  177: /* 165 */    CALL(sys_getresuid16)
  178:         CALL(sys_ni_syscall)        /* vm86 */
  179:         CALL(sys_ni_syscall)        /* was sys_query_module */
  180:         CALL(sys_poll)
  181:         CALL(sys_nfsservctl)
  182: /* 170 */    CALL(sys_setresgid16)
  183:         CALL(sys_getresgid16)
  184:         CALL(sys_prctl)
  185:         CALL(sys_rt_sigreturn_wrapper)
  186:         CALL(sys_rt_sigaction)
  187: /* 175 */    CALL(sys_rt_sigprocmask)
  188:         CALL(sys_rt_sigpending)
  189:         CALL(sys_rt_sigtimedwait)
  190:         CALL(sys_rt_sigqueueinfo)
  191:         CALL(sys_rt_sigsuspend_wrapper)
  192: /* 180 */    CALL(ABI(sys_pread64, sys_oabi_pread64))
  193:         CALL(ABI(sys_pwrite64, sys_oabi_pwrite64))
  194:         CALL(sys_chown16)
  195:         CALL(sys_getcwd)
  196:         CALL(sys_capget)
  197: /* 185 */    CALL(sys_capset)
  198:         CALL(sys_sigaltstack_wrapper)
  199:         CALL(sys_sendfile)
  200:         CALL(sys_ni_syscall)        /* getpmsg */
  201:         CALL(sys_ni_syscall)        /* putpmsg */
  202: /* 190 */    CALL(sys_vfork_wrapper)
  203:         CALL(sys_getrlimit)
  204:         CALL(sys_mmap2)
  205:         CALL(ABI(sys_truncate64, sys_oabi_truncate64))
  206:         CALL(ABI(sys_ftruncate64, sys_oabi_ftruncate64))
  207: /* 195 */    CALL(ABI(sys_stat64, sys_oabi_stat64))
  208:         CALL(ABI(sys_lstat64, sys_oabi_lstat64))
  209:         CALL(ABI(sys_fstat64, sys_oabi_fstat64))
  210:         CALL(sys_lchown)
  211:         CALL(sys_getuid)
  212: /* 200 */    CALL(sys_getgid)
  213:         CALL(sys_geteuid)
  214:         CALL(sys_getegid)
  215:         CALL(sys_setreuid)
  216:         CALL(sys_setregid)
  217: /* 205 */    CALL(sys_getgroups)
  218:         CALL(sys_setgroups)
  219:         CALL(sys_fchown)
  220:         CALL(sys_setresuid)
  221:         CALL(sys_getresuid)
  222: /* 210 */    CALL(sys_setresgid)
  223:         CALL(sys_getresgid)
  224:         CALL(sys_chown)
  225:         CALL(sys_setuid)
  226:         CALL(sys_setgid)
  227: /* 215 */    CALL(sys_setfsuid)
  228:         CALL(sys_setfsgid)
  229:         CALL(sys_getdents64)
  230:         CALL(sys_pivot_root)
  231:         CALL(sys_mincore)
  232: /* 220 */    CALL(sys_madvise)
  233:         CALL(ABI(sys_fcntl64, sys_oabi_fcntl64))
  234:         CALL(sys_ni_syscall) /* TUX */
  235:         CALL(sys_ni_syscall)
  236:         CALL(sys_gettid)
  237: /* 225 */    CALL(ABI(sys_readahead, sys_oabi_readahead))
  238:         CALL(sys_setxattr)
  239:         CALL(sys_lsetxattr)
  240:         CALL(sys_fsetxattr)
  241:         CALL(sys_getxattr)
  242: /* 230 */    CALL(sys_lgetxattr)
  243:         CALL(sys_fgetxattr)
  244:         CALL(sys_listxattr)
  245:         CALL(sys_llistxattr)
  246:         CALL(sys_flistxattr)
  247: /* 235 */    CALL(sys_removexattr)
  248:         CALL(sys_lremovexattr)
  249:         CALL(sys_fremovexattr)
  250:         CALL(sys_tkill)
  251:         CALL(sys_sendfile64)
  252: /* 240 */    CALL(sys_futex)
  253:         CALL(sys_sched_setaffinity)
  254:         CALL(sys_sched_getaffinity)
  255:         CALL(sys_io_setup)
  256:         CALL(sys_io_destroy)
  257: /* 245 */    CALL(sys_io_getevents)
  258:         CALL(sys_io_submit)
  259:         CALL(sys_io_cancel)
  260:         CALL(sys_exit_group)
  261:         CALL(sys_lookup_dcookie)
  262: /* 250 */    CALL(sys_epoll_create)
  263:         CALL(ABI(sys_epoll_ctl, sys_oabi_epoll_ctl))
  264:         CALL(ABI(sys_epoll_wait, sys_oabi_epoll_wait))
  265:         CALL(sys_remap_file_pages)
  266:         CALL(sys_ni_syscall)    /* sys_set_thread_area */
  267: /* 255 */    CALL(sys_ni_syscall)    /* sys_get_thread_area */
  268:         CALL(sys_set_tid_address)
  269:         CALL(sys_timer_create)
  270:         CALL(sys_timer_settime)
  271:         CALL(sys_timer_gettime)
  272: /* 260 */    CALL(sys_timer_getoverrun)
  273:         CALL(sys_timer_delete)
  274:         CALL(sys_clock_settime)
  275:         CALL(sys_clock_gettime)
  276:         CALL(sys_clock_getres)
  277: /* 265 */    CALL(sys_clock_nanosleep)
  278:         CALL(sys_statfs64_wrapper)
  279:         CALL(sys_fstatfs64_wrapper)
  280:         CALL(sys_tgkill)
  281:         CALL(sys_utimes)
  282: /* 270 */    CALL(sys_arm_fadvise64_64)
  283:         CALL(sys_pciconfig_iobase)
  284:         CALL(sys_pciconfig_read)
  285:         CALL(sys_pciconfig_write)
  286:         CALL(sys_mq_open)
  287: /* 275 */    CALL(sys_mq_unlink)
  288:         CALL(sys_mq_timedsend)
  289:         CALL(sys_mq_timedreceive)
  290:         CALL(sys_mq_notify)
  291:         CALL(sys_mq_getsetattr)
  292: /* 280 */    CALL(sys_waitid)
  293:         CALL(sys_socket)
  294:         CALL(ABI(sys_bind, sys_oabi_bind))
  295:         CALL(ABI(sys_connect, sys_oabi_connect))
  296:         CALL(sys_listen)
  297: /* 285 */    CALL(sys_accept)
  298:         CALL(sys_getsockname)
  299:         CALL(sys_getpeername)
  300:         CALL(sys_socketpair)
  301:         CALL(sys_send)
  302: /* 290 */    CALL(ABI(sys_sendto, sys_oabi_sendto))
  303:         CALL(sys_recv)
  304:         CALL(sys_recvfrom)
  305:         CALL(sys_shutdown)
  306:         CALL(sys_setsockopt)
  307: /* 295 */    CALL(sys_getsockopt)
  308:         CALL(ABI(sys_sendmsg, sys_oabi_sendmsg))
  309:         CALL(sys_recvmsg)
  310:         CALL(ABI(sys_semop, sys_oabi_semop))
  311:         CALL(sys_semget)
  312: /* 300 */    CALL(sys_semctl)
  313:         CALL(sys_msgsnd)
  314:         CALL(sys_msgrcv)
  315:         CALL(sys_msgget)
  316:         CALL(sys_msgctl)
  317: /* 305 */    CALL(sys_shmat)
  318:         CALL(sys_shmdt)
  319:         CALL(sys_shmget)
  320:         CALL(sys_shmctl)
  321:         CALL(sys_add_key)
  322: /* 310 */    CALL(sys_request_key)
  323:         CALL(sys_keyctl)
  324:         CALL(ABI(sys_semtimedop, sys_oabi_semtimedop))
  325: /* vserver */    CALL(sys_ni_syscall)
  326:         CALL(sys_ioprio_set)
  327: /* 315 */    CALL(sys_ioprio_get)
  328:         CALL(sys_inotify_init)
  329:         CALL(sys_inotify_add_watch)
  330:         CALL(sys_inotify_rm_watch)
  331:         CALL(sys_mbind)
  332: /* 320 */    CALL(sys_get_mempolicy)
  333:         CALL(sys_set_mempolicy)
  334:         CALL(sys_openat)
  335:         CALL(sys_mkdirat)
  336:         CALL(sys_mknodat)
  337: /* 325 */    CALL(sys_fchownat)
  338:         CALL(sys_futimesat)
  339:         CALL(ABI(sys_fstatat64,  sys_oabi_fstatat64))
  340:         CALL(sys_unlinkat)
  341:         CALL(sys_renameat)
  342: /* 330 */    CALL(sys_linkat)
  343:         CALL(sys_symlinkat)
  344:         CALL(sys_readlinkat)
  345:         CALL(sys_fchmodat)
  346:         CALL(sys_faccessat)
  347: /* 335 */    CALL(sys_ni_syscall)        /* eventually pselect6 */
  348:         CALL(sys_ni_syscall)        /* eventually ppoll */
  349:         CALL(sys_unshare)
  350:         CALL(sys_set_robust_list)
  351:         CALL(sys_get_robust_list)
  352: /* 340 */    CALL(sys_splice)
  353:         CALL(sys_sync_file_range2)
  354:         CALL(sys_tee)
  355:         CALL(sys_vmsplice)
  356:         CALL(sys_move_pages)
  357: /* 345 */    CALL(sys_getcpu)
  358:         CALL(sys_ni_syscall)        /* eventually epoll_pwait */
  359:         CALL(sys_kexec_load)
  360:         CALL(sys_utimensat)
  361:         CALL(sys_signalfd)
  362: /* 350 */    CALL(sys_timerfd_create)
  363:         CALL(sys_eventfd)
  364:         CALL(sys_fallocate)
  365:         CALL(sys_timerfd_settime)
  366:         CALL(sys_timerfd_gettime)
  367: /* 355 */    CALL(sys_signalfd4)
  368:         CALL(sys_eventfd2)
  369:         CALL(sys_epoll_create1)
  370:         CALL(sys_dup3)
  371:         CALL(sys_pipe2)
  372: /* 360 */    CALL(sys_inotify_init1)
  373:         CALL(sys_preadv)
  374:         CALL(sys_pwritev)
  375: #ifndef syscalls_counted
  376: .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
  377: #define syscalls_counted
  378: #endif
  379: .rept syscalls_padding
  380:         CALL(sys_ni_syscall)
  381: .endr
entry-common.S

