对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