]>
Commit | Line | Data |
---|---|---|
9994a338 PM |
1 | /* |
2 | * This file contains the table of syscall-handling functions. | |
3 | * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) | |
4 | * | |
5 | * Largely rewritten by Cort Dougan (cort@cs.nmt.edu) | |
6 | * and Paul Mackerras. | |
7 | * | |
8 | * Adapted for iSeries by Mike Corrigan (mikejc@us.ibm.com) | |
9 | * PPC64 updates by Dave Engebretsen (engebret@us.ibm.com) | |
10 | * | |
11 | * This program is free software; you can redistribute it and/or | |
12 | * modify it under the terms of the GNU General Public License | |
13 | * as published by the Free Software Foundation; either version | |
14 | * 2 of the License, or (at your option) any later version. | |
15 | */ | |
16 | ||
17 | #include <linux/config.h> | |
18 | #include <asm/ppc_asm.h> | |
19 | ||
20 | #ifdef CONFIG_PPC64 | |
21 | #define SYSCALL(func) .llong .sys_##func,.sys_##func | |
9994a338 PM |
22 | #define COMPAT_SYS(func) .llong .sys_##func,.compat_sys_##func |
23 | #define PPC_SYS(func) .llong .ppc_##func,.ppc_##func | |
24 | #define OLDSYS(func) .llong .sys_ni_syscall,.sys_ni_syscall | |
b09a4913 | 25 | #define SYS32ONLY(func) .llong .sys_ni_syscall,.compat_sys_##func |
9994a338 PM |
26 | #define SYSX(f, f3264, f32) .llong .f,.f3264 |
27 | #else | |
28 | #define SYSCALL(func) .long sys_##func | |
9994a338 PM |
29 | #define COMPAT_SYS(func) .long sys_##func |
30 | #define PPC_SYS(func) .long ppc_##func | |
31 | #define OLDSYS(func) .long sys_##func | |
32 | #define SYS32ONLY(func) .long sys_##func | |
33 | #define SYSX(f, f3264, f32) .long f32 | |
34 | #endif | |
35 | ||
36 | #ifdef CONFIG_PPC64 | |
37 | #define sys_sigpending sys_ni_syscall | |
38 | #define sys_old_getrlimit sys_ni_syscall | |
39 | #else | |
40 | #define ppc_rtas sys_ni_syscall | |
41 | #endif | |
42 | ||
43 | _GLOBAL(sys_call_table) | |
44 | SYSCALL(restart_syscall) | |
45 | SYSCALL(exit) | |
46 | PPC_SYS(fork) | |
47 | SYSCALL(read) | |
48 | SYSCALL(write) | |
49 | COMPAT_SYS(open) | |
50 | SYSCALL(close) | |
b09a4913 SR |
51 | COMPAT_SYS(waitpid) |
52 | COMPAT_SYS(creat) | |
9994a338 PM |
53 | SYSCALL(link) |
54 | SYSCALL(unlink) | |
b09a4913 | 55 | COMPAT_SYS(execve) |
9994a338 PM |
56 | SYSCALL(chdir) |
57 | SYSX(sys64_time,compat_sys_time,sys_time) | |
58 | SYSCALL(mknod) | |
59 | SYSCALL(chmod) | |
60 | SYSCALL(lchown) | |
61 | SYSCALL(ni_syscall) | |
62 | OLDSYS(stat) | |
63 | SYSX(sys_lseek,ppc32_lseek,sys_lseek) | |
64 | SYSCALL(getpid) | |
65 | COMPAT_SYS(mount) | |
66 | SYSX(sys_ni_syscall,sys_oldumount,sys_oldumount) | |
67 | SYSCALL(setuid) | |
68 | SYSCALL(getuid) | |
69 | COMPAT_SYS(stime) | |
b09a4913 | 70 | COMPAT_SYS(ptrace) |
9994a338 PM |
71 | SYSCALL(alarm) |
72 | OLDSYS(fstat) | |
b09a4913 | 73 | COMPAT_SYS(pause) |
9994a338 PM |
74 | COMPAT_SYS(utime) |
75 | SYSCALL(ni_syscall) | |
76 | SYSCALL(ni_syscall) | |
b09a4913 SR |
77 | COMPAT_SYS(access) |
78 | COMPAT_SYS(nice) | |
9994a338 PM |
79 | SYSCALL(ni_syscall) |
80 | SYSCALL(sync) | |
b09a4913 | 81 | COMPAT_SYS(kill) |
9994a338 | 82 | SYSCALL(rename) |
b09a4913 | 83 | COMPAT_SYS(mkdir) |
9994a338 PM |
84 | SYSCALL(rmdir) |
85 | SYSCALL(dup) | |
86 | SYSCALL(pipe) | |
87 | COMPAT_SYS(times) | |
88 | SYSCALL(ni_syscall) | |
89 | SYSCALL(brk) | |
90 | SYSCALL(setgid) | |
91 | SYSCALL(getgid) | |
92 | SYSCALL(signal) | |
93 | SYSCALL(geteuid) | |
94 | SYSCALL(getegid) | |
95 | SYSCALL(acct) | |
96 | SYSCALL(umount) | |
97 | SYSCALL(ni_syscall) | |
98 | COMPAT_SYS(ioctl) | |
99 | COMPAT_SYS(fcntl) | |
100 | SYSCALL(ni_syscall) | |
b09a4913 | 101 | COMPAT_SYS(setpgid) |
9994a338 | 102 | SYSCALL(ni_syscall) |
30286ef6 | 103 | SYSX(sys_ni_syscall,sys_olduname, sys_olduname) |
b09a4913 | 104 | COMPAT_SYS(umask) |
9994a338 PM |
105 | SYSCALL(chroot) |
106 | SYSCALL(ustat) | |
107 | SYSCALL(dup2) | |
108 | SYSCALL(getppid) | |
109 | SYSCALL(getpgrp) | |
110 | SYSCALL(setsid) | |
111 | SYS32ONLY(sigaction) | |
112 | SYSCALL(sgetmask) | |
b09a4913 | 113 | COMPAT_SYS(ssetmask) |
9994a338 PM |
114 | SYSCALL(setreuid) |
115 | SYSCALL(setregid) | |
116 | SYSX(sys_ni_syscall,ppc32_sigsuspend,ppc_sigsuspend) | |
117 | COMPAT_SYS(sigpending) | |
b09a4913 | 118 | COMPAT_SYS(sethostname) |
9994a338 PM |
119 | COMPAT_SYS(setrlimit) |
120 | COMPAT_SYS(old_getrlimit) | |
121 | COMPAT_SYS(getrusage) | |
b09a4913 SR |
122 | COMPAT_SYS(gettimeofday) |
123 | COMPAT_SYS(settimeofday) | |
124 | COMPAT_SYS(getgroups) | |
125 | COMPAT_SYS(setgroups) | |
9994a338 PM |
126 | SYSX(sys_ni_syscall,sys_ni_syscall,ppc_select) |
127 | SYSCALL(symlink) | |
128 | OLDSYS(lstat) | |
b09a4913 | 129 | COMPAT_SYS(readlink) |
9994a338 PM |
130 | SYSCALL(uselib) |
131 | SYSCALL(swapon) | |
132 | SYSCALL(reboot) | |
133 | SYSX(sys_ni_syscall,old32_readdir,old_readdir) | |
134 | SYSCALL(mmap) | |
135 | SYSCALL(munmap) | |
136 | SYSCALL(truncate) | |
137 | SYSCALL(ftruncate) | |
138 | SYSCALL(fchmod) | |
139 | SYSCALL(fchown) | |
b09a4913 SR |
140 | COMPAT_SYS(getpriority) |
141 | COMPAT_SYS(setpriority) | |
9994a338 PM |
142 | SYSCALL(ni_syscall) |
143 | COMPAT_SYS(statfs) | |
144 | COMPAT_SYS(fstatfs) | |
145 | SYSCALL(ni_syscall) | |
146 | COMPAT_SYS(socketcall) | |
b09a4913 | 147 | COMPAT_SYS(syslog) |
9994a338 PM |
148 | COMPAT_SYS(setitimer) |
149 | COMPAT_SYS(getitimer) | |
150 | COMPAT_SYS(newstat) | |
151 | COMPAT_SYS(newlstat) | |
152 | COMPAT_SYS(newfstat) | |
30286ef6 | 153 | SYSX(sys_ni_syscall,sys_uname,sys_uname) |
9994a338 PM |
154 | SYSCALL(ni_syscall) |
155 | SYSCALL(vhangup) | |
156 | SYSCALL(ni_syscall) | |
157 | SYSCALL(ni_syscall) | |
158 | COMPAT_SYS(wait4) | |
159 | SYSCALL(swapoff) | |
b09a4913 SR |
160 | COMPAT_SYS(sysinfo) |
161 | COMPAT_SYS(ipc) | |
9994a338 PM |
162 | SYSCALL(fsync) |
163 | SYSX(sys_ni_syscall,ppc32_sigreturn,sys_sigreturn) | |
164 | PPC_SYS(clone) | |
b09a4913 | 165 | COMPAT_SYS(setdomainname) |
30286ef6 | 166 | PPC_SYS(newuname) |
9994a338 | 167 | SYSCALL(ni_syscall) |
b09a4913 | 168 | COMPAT_SYS(adjtimex) |
9994a338 PM |
169 | SYSCALL(mprotect) |
170 | SYSX(sys_ni_syscall,compat_sys_sigprocmask,sys_sigprocmask) | |
171 | SYSCALL(ni_syscall) | |
172 | SYSCALL(init_module) | |
173 | SYSCALL(delete_module) | |
174 | SYSCALL(ni_syscall) | |
175 | SYSCALL(quotactl) | |
b09a4913 | 176 | COMPAT_SYS(getpgid) |
9994a338 PM |
177 | SYSCALL(fchdir) |
178 | SYSCALL(bdflush) | |
b09a4913 | 179 | COMPAT_SYS(sysfs) |
9994a338 PM |
180 | SYSX(ppc64_personality,ppc64_personality,sys_personality) |
181 | SYSCALL(ni_syscall) | |
182 | SYSCALL(setfsuid) | |
183 | SYSCALL(setfsgid) | |
184 | SYSCALL(llseek) | |
b09a4913 | 185 | COMPAT_SYS(getdents) |
9994a338 PM |
186 | SYSX(sys_select,ppc32_select,ppc_select) |
187 | SYSCALL(flock) | |
188 | SYSCALL(msync) | |
189 | COMPAT_SYS(readv) | |
190 | COMPAT_SYS(writev) | |
b09a4913 | 191 | COMPAT_SYS(getsid) |
9994a338 | 192 | SYSCALL(fdatasync) |
b09a4913 | 193 | COMPAT_SYS(sysctl) |
9994a338 PM |
194 | SYSCALL(mlock) |
195 | SYSCALL(munlock) | |
196 | SYSCALL(mlockall) | |
197 | SYSCALL(munlockall) | |
b09a4913 SR |
198 | COMPAT_SYS(sched_setparam) |
199 | COMPAT_SYS(sched_getparam) | |
200 | COMPAT_SYS(sched_setscheduler) | |
201 | COMPAT_SYS(sched_getscheduler) | |
9994a338 | 202 | SYSCALL(sched_yield) |
b09a4913 SR |
203 | COMPAT_SYS(sched_get_priority_max) |
204 | COMPAT_SYS(sched_get_priority_min) | |
205 | COMPAT_SYS(sched_rr_get_interval) | |
9994a338 PM |
206 | COMPAT_SYS(nanosleep) |
207 | SYSCALL(mremap) | |
208 | SYSCALL(setresuid) | |
209 | SYSCALL(getresuid) | |
210 | SYSCALL(ni_syscall) | |
211 | SYSCALL(poll) | |
212 | COMPAT_SYS(nfsservctl) | |
213 | SYSCALL(setresgid) | |
214 | SYSCALL(getresgid) | |
b09a4913 | 215 | COMPAT_SYS(prctl) |
9994a338 | 216 | SYSX(ppc64_rt_sigreturn,ppc32_rt_sigreturn,sys_rt_sigreturn) |
b09a4913 SR |
217 | COMPAT_SYS(rt_sigaction) |
218 | COMPAT_SYS(rt_sigprocmask) | |
219 | COMPAT_SYS(rt_sigpending) | |
9994a338 | 220 | COMPAT_SYS(rt_sigtimedwait) |
b09a4913 | 221 | COMPAT_SYS(rt_sigqueueinfo) |
9994a338 | 222 | SYSX(ppc64_rt_sigsuspend,ppc32_rt_sigsuspend,ppc_rt_sigsuspend) |
b09a4913 SR |
223 | COMPAT_SYS(pread64) |
224 | COMPAT_SYS(pwrite64) | |
9994a338 PM |
225 | SYSCALL(chown) |
226 | SYSCALL(getcwd) | |
227 | SYSCALL(capget) | |
228 | SYSCALL(capset) | |
b09a4913 SR |
229 | COMPAT_SYS(sigaltstack) |
230 | SYSX(sys_sendfile64,compat_sys_sendfile,sys_sendfile) | |
9994a338 PM |
231 | SYSCALL(ni_syscall) |
232 | SYSCALL(ni_syscall) | |
233 | PPC_SYS(vfork) | |
234 | COMPAT_SYS(getrlimit) | |
b09a4913 | 235 | COMPAT_SYS(readahead) |
9994a338 PM |
236 | SYS32ONLY(mmap2) |
237 | SYS32ONLY(truncate64) | |
238 | SYS32ONLY(ftruncate64) | |
239 | SYSX(sys_ni_syscall,sys_stat64,sys_stat64) | |
240 | SYSX(sys_ni_syscall,sys_lstat64,sys_lstat64) | |
241 | SYSX(sys_ni_syscall,sys_fstat64,sys_fstat64) | |
b09a4913 SR |
242 | COMPAT_SYS(pciconfig_read) |
243 | COMPAT_SYS(pciconfig_write) | |
244 | COMPAT_SYS(pciconfig_iobase) | |
9994a338 PM |
245 | SYSCALL(ni_syscall) |
246 | SYSCALL(getdents64) | |
247 | SYSCALL(pivot_root) | |
248 | SYSX(sys_ni_syscall,compat_sys_fcntl64,sys_fcntl64) | |
249 | SYSCALL(madvise) | |
250 | SYSCALL(mincore) | |
251 | SYSCALL(gettid) | |
252 | SYSCALL(tkill) | |
253 | SYSCALL(setxattr) | |
254 | SYSCALL(lsetxattr) | |
255 | SYSCALL(fsetxattr) | |
256 | SYSCALL(getxattr) | |
257 | SYSCALL(lgetxattr) | |
258 | SYSCALL(fgetxattr) | |
259 | SYSCALL(listxattr) | |
260 | SYSCALL(llistxattr) | |
261 | SYSCALL(flistxattr) | |
262 | SYSCALL(removexattr) | |
263 | SYSCALL(lremovexattr) | |
264 | SYSCALL(fremovexattr) | |
265 | COMPAT_SYS(futex) | |
266 | COMPAT_SYS(sched_setaffinity) | |
267 | COMPAT_SYS(sched_getaffinity) | |
268 | SYSCALL(ni_syscall) | |
269 | SYSCALL(ni_syscall) | |
270 | SYS32ONLY(sendfile64) | |
271 | COMPAT_SYS(io_setup) | |
272 | SYSCALL(io_destroy) | |
273 | COMPAT_SYS(io_getevents) | |
274 | COMPAT_SYS(io_submit) | |
275 | SYSCALL(io_cancel) | |
276 | SYSCALL(set_tid_address) | |
277 | SYSX(sys_fadvise64,ppc32_fadvise64,sys_fadvise64) | |
278 | SYSCALL(exit_group) | |
279 | SYSX(sys_lookup_dcookie,ppc32_lookup_dcookie,sys_lookup_dcookie) | |
280 | SYSCALL(epoll_create) | |
281 | SYSCALL(epoll_ctl) | |
282 | SYSCALL(epoll_wait) | |
283 | SYSCALL(remap_file_pages) | |
284 | SYSX(sys_timer_create,ppc32_timer_create,sys_timer_create) | |
285 | COMPAT_SYS(timer_settime) | |
286 | COMPAT_SYS(timer_gettime) | |
287 | SYSCALL(timer_getoverrun) | |
288 | SYSCALL(timer_delete) | |
289 | COMPAT_SYS(clock_settime) | |
290 | COMPAT_SYS(clock_gettime) | |
291 | COMPAT_SYS(clock_getres) | |
292 | COMPAT_SYS(clock_nanosleep) | |
293 | SYSX(ppc64_swapcontext,ppc32_swapcontext,ppc_swapcontext) | |
b09a4913 SR |
294 | COMPAT_SYS(tgkill) |
295 | COMPAT_SYS(utimes) | |
9994a338 PM |
296 | COMPAT_SYS(statfs64) |
297 | COMPAT_SYS(fstatfs64) | |
77f543cb | 298 | SYSX(sys_ni_syscall, ppc_fadvise64_64, ppc_fadvise64_64) |
9994a338 PM |
299 | PPC_SYS(rtas) |
300 | OLDSYS(debug_setcontext) | |
301 | SYSCALL(ni_syscall) | |
302 | SYSCALL(ni_syscall) | |
303 | COMPAT_SYS(mbind) | |
304 | COMPAT_SYS(get_mempolicy) | |
305 | COMPAT_SYS(set_mempolicy) | |
306 | COMPAT_SYS(mq_open) | |
307 | SYSCALL(mq_unlink) | |
308 | COMPAT_SYS(mq_timedsend) | |
309 | COMPAT_SYS(mq_timedreceive) | |
310 | COMPAT_SYS(mq_notify) | |
311 | COMPAT_SYS(mq_getsetattr) | |
312 | COMPAT_SYS(kexec_load) | |
b09a4913 SR |
313 | COMPAT_SYS(add_key) |
314 | COMPAT_SYS(request_key) | |
9994a338 PM |
315 | COMPAT_SYS(keyctl) |
316 | COMPAT_SYS(waitid) | |
b09a4913 SR |
317 | COMPAT_SYS(ioprio_set) |
318 | COMPAT_SYS(ioprio_get) | |
9994a338 PM |
319 | SYSCALL(inotify_init) |
320 | SYSCALL(inotify_add_watch) | |
321 | SYSCALL(inotify_rm_watch) |