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 | |
9994a338 PM |
39 | #endif |
40 | ||
41 | _GLOBAL(sys_call_table) | |
42 | SYSCALL(restart_syscall) | |
43 | SYSCALL(exit) | |
44 | PPC_SYS(fork) | |
45 | SYSCALL(read) | |
46 | SYSCALL(write) | |
47 | COMPAT_SYS(open) | |
48 | SYSCALL(close) | |
b09a4913 SR |
49 | COMPAT_SYS(waitpid) |
50 | COMPAT_SYS(creat) | |
9994a338 PM |
51 | SYSCALL(link) |
52 | SYSCALL(unlink) | |
b09a4913 | 53 | COMPAT_SYS(execve) |
9994a338 | 54 | SYSCALL(chdir) |
002ec58e | 55 | COMPAT_SYS(time) |
9994a338 PM |
56 | SYSCALL(mknod) |
57 | SYSCALL(chmod) | |
58 | SYSCALL(lchown) | |
59 | SYSCALL(ni_syscall) | |
60 | OLDSYS(stat) | |
61 | SYSX(sys_lseek,ppc32_lseek,sys_lseek) | |
62 | SYSCALL(getpid) | |
63 | COMPAT_SYS(mount) | |
64 | SYSX(sys_ni_syscall,sys_oldumount,sys_oldumount) | |
65 | SYSCALL(setuid) | |
66 | SYSCALL(getuid) | |
67 | COMPAT_SYS(stime) | |
b09a4913 | 68 | COMPAT_SYS(ptrace) |
9994a338 PM |
69 | SYSCALL(alarm) |
70 | OLDSYS(fstat) | |
b09a4913 | 71 | COMPAT_SYS(pause) |
9994a338 PM |
72 | COMPAT_SYS(utime) |
73 | SYSCALL(ni_syscall) | |
74 | SYSCALL(ni_syscall) | |
b09a4913 SR |
75 | COMPAT_SYS(access) |
76 | COMPAT_SYS(nice) | |
9994a338 PM |
77 | SYSCALL(ni_syscall) |
78 | SYSCALL(sync) | |
b09a4913 | 79 | COMPAT_SYS(kill) |
9994a338 | 80 | SYSCALL(rename) |
b09a4913 | 81 | COMPAT_SYS(mkdir) |
9994a338 PM |
82 | SYSCALL(rmdir) |
83 | SYSCALL(dup) | |
84 | SYSCALL(pipe) | |
85 | COMPAT_SYS(times) | |
86 | SYSCALL(ni_syscall) | |
87 | SYSCALL(brk) | |
88 | SYSCALL(setgid) | |
89 | SYSCALL(getgid) | |
90 | SYSCALL(signal) | |
91 | SYSCALL(geteuid) | |
92 | SYSCALL(getegid) | |
93 | SYSCALL(acct) | |
94 | SYSCALL(umount) | |
95 | SYSCALL(ni_syscall) | |
96 | COMPAT_SYS(ioctl) | |
97 | COMPAT_SYS(fcntl) | |
98 | SYSCALL(ni_syscall) | |
b09a4913 | 99 | COMPAT_SYS(setpgid) |
9994a338 | 100 | SYSCALL(ni_syscall) |
30286ef6 | 101 | SYSX(sys_ni_syscall,sys_olduname, sys_olduname) |
b09a4913 | 102 | COMPAT_SYS(umask) |
9994a338 PM |
103 | SYSCALL(chroot) |
104 | SYSCALL(ustat) | |
105 | SYSCALL(dup2) | |
106 | SYSCALL(getppid) | |
107 | SYSCALL(getpgrp) | |
108 | SYSCALL(setsid) | |
109 | SYS32ONLY(sigaction) | |
110 | SYSCALL(sgetmask) | |
b09a4913 | 111 | COMPAT_SYS(ssetmask) |
9994a338 PM |
112 | SYSCALL(setreuid) |
113 | SYSCALL(setregid) | |
401d1f02 | 114 | SYS32ONLY(sigsuspend) |
9994a338 | 115 | COMPAT_SYS(sigpending) |
b09a4913 | 116 | COMPAT_SYS(sethostname) |
9994a338 PM |
117 | COMPAT_SYS(setrlimit) |
118 | COMPAT_SYS(old_getrlimit) | |
119 | COMPAT_SYS(getrusage) | |
b09a4913 SR |
120 | COMPAT_SYS(gettimeofday) |
121 | COMPAT_SYS(settimeofday) | |
122 | COMPAT_SYS(getgroups) | |
123 | COMPAT_SYS(setgroups) | |
9994a338 PM |
124 | SYSX(sys_ni_syscall,sys_ni_syscall,ppc_select) |
125 | SYSCALL(symlink) | |
126 | OLDSYS(lstat) | |
b09a4913 | 127 | COMPAT_SYS(readlink) |
9994a338 PM |
128 | SYSCALL(uselib) |
129 | SYSCALL(swapon) | |
130 | SYSCALL(reboot) | |
131 | SYSX(sys_ni_syscall,old32_readdir,old_readdir) | |
132 | SYSCALL(mmap) | |
133 | SYSCALL(munmap) | |
134 | SYSCALL(truncate) | |
135 | SYSCALL(ftruncate) | |
136 | SYSCALL(fchmod) | |
137 | SYSCALL(fchown) | |
b09a4913 SR |
138 | COMPAT_SYS(getpriority) |
139 | COMPAT_SYS(setpriority) | |
9994a338 PM |
140 | SYSCALL(ni_syscall) |
141 | COMPAT_SYS(statfs) | |
142 | COMPAT_SYS(fstatfs) | |
143 | SYSCALL(ni_syscall) | |
144 | COMPAT_SYS(socketcall) | |
b09a4913 | 145 | COMPAT_SYS(syslog) |
9994a338 PM |
146 | COMPAT_SYS(setitimer) |
147 | COMPAT_SYS(getitimer) | |
148 | COMPAT_SYS(newstat) | |
149 | COMPAT_SYS(newlstat) | |
150 | COMPAT_SYS(newfstat) | |
30286ef6 | 151 | SYSX(sys_ni_syscall,sys_uname,sys_uname) |
9994a338 PM |
152 | SYSCALL(ni_syscall) |
153 | SYSCALL(vhangup) | |
154 | SYSCALL(ni_syscall) | |
155 | SYSCALL(ni_syscall) | |
156 | COMPAT_SYS(wait4) | |
157 | SYSCALL(swapoff) | |
b09a4913 SR |
158 | COMPAT_SYS(sysinfo) |
159 | COMPAT_SYS(ipc) | |
9994a338 | 160 | SYSCALL(fsync) |
401d1f02 | 161 | SYS32ONLY(sigreturn) |
9994a338 | 162 | PPC_SYS(clone) |
b09a4913 | 163 | COMPAT_SYS(setdomainname) |
30286ef6 | 164 | PPC_SYS(newuname) |
9994a338 | 165 | SYSCALL(ni_syscall) |
b09a4913 | 166 | COMPAT_SYS(adjtimex) |
9994a338 PM |
167 | SYSCALL(mprotect) |
168 | SYSX(sys_ni_syscall,compat_sys_sigprocmask,sys_sigprocmask) | |
169 | SYSCALL(ni_syscall) | |
170 | SYSCALL(init_module) | |
171 | SYSCALL(delete_module) | |
172 | SYSCALL(ni_syscall) | |
173 | SYSCALL(quotactl) | |
b09a4913 | 174 | COMPAT_SYS(getpgid) |
9994a338 PM |
175 | SYSCALL(fchdir) |
176 | SYSCALL(bdflush) | |
b09a4913 | 177 | COMPAT_SYS(sysfs) |
9994a338 PM |
178 | SYSX(ppc64_personality,ppc64_personality,sys_personality) |
179 | SYSCALL(ni_syscall) | |
180 | SYSCALL(setfsuid) | |
181 | SYSCALL(setfsgid) | |
182 | SYSCALL(llseek) | |
b09a4913 | 183 | COMPAT_SYS(getdents) |
9994a338 PM |
184 | SYSX(sys_select,ppc32_select,ppc_select) |
185 | SYSCALL(flock) | |
186 | SYSCALL(msync) | |
187 | COMPAT_SYS(readv) | |
188 | COMPAT_SYS(writev) | |
b09a4913 | 189 | COMPAT_SYS(getsid) |
9994a338 | 190 | SYSCALL(fdatasync) |
b09a4913 | 191 | COMPAT_SYS(sysctl) |
9994a338 PM |
192 | SYSCALL(mlock) |
193 | SYSCALL(munlock) | |
194 | SYSCALL(mlockall) | |
195 | SYSCALL(munlockall) | |
b09a4913 SR |
196 | COMPAT_SYS(sched_setparam) |
197 | COMPAT_SYS(sched_getparam) | |
198 | COMPAT_SYS(sched_setscheduler) | |
199 | COMPAT_SYS(sched_getscheduler) | |
9994a338 | 200 | SYSCALL(sched_yield) |
b09a4913 SR |
201 | COMPAT_SYS(sched_get_priority_max) |
202 | COMPAT_SYS(sched_get_priority_min) | |
203 | COMPAT_SYS(sched_rr_get_interval) | |
9994a338 PM |
204 | COMPAT_SYS(nanosleep) |
205 | SYSCALL(mremap) | |
206 | SYSCALL(setresuid) | |
207 | SYSCALL(getresuid) | |
208 | SYSCALL(ni_syscall) | |
209 | SYSCALL(poll) | |
210 | COMPAT_SYS(nfsservctl) | |
211 | SYSCALL(setresgid) | |
212 | SYSCALL(getresgid) | |
b09a4913 | 213 | COMPAT_SYS(prctl) |
401d1f02 | 214 | COMPAT_SYS(rt_sigreturn) |
b09a4913 SR |
215 | COMPAT_SYS(rt_sigaction) |
216 | COMPAT_SYS(rt_sigprocmask) | |
217 | COMPAT_SYS(rt_sigpending) | |
9994a338 | 218 | COMPAT_SYS(rt_sigtimedwait) |
b09a4913 | 219 | COMPAT_SYS(rt_sigqueueinfo) |
401d1f02 | 220 | COMPAT_SYS(rt_sigsuspend) |
b09a4913 SR |
221 | COMPAT_SYS(pread64) |
222 | COMPAT_SYS(pwrite64) | |
9994a338 PM |
223 | SYSCALL(chown) |
224 | SYSCALL(getcwd) | |
225 | SYSCALL(capget) | |
226 | SYSCALL(capset) | |
b09a4913 SR |
227 | COMPAT_SYS(sigaltstack) |
228 | SYSX(sys_sendfile64,compat_sys_sendfile,sys_sendfile) | |
9994a338 PM |
229 | SYSCALL(ni_syscall) |
230 | SYSCALL(ni_syscall) | |
231 | PPC_SYS(vfork) | |
232 | COMPAT_SYS(getrlimit) | |
b09a4913 | 233 | COMPAT_SYS(readahead) |
9994a338 PM |
234 | SYS32ONLY(mmap2) |
235 | SYS32ONLY(truncate64) | |
236 | SYS32ONLY(ftruncate64) | |
237 | SYSX(sys_ni_syscall,sys_stat64,sys_stat64) | |
238 | SYSX(sys_ni_syscall,sys_lstat64,sys_lstat64) | |
239 | SYSX(sys_ni_syscall,sys_fstat64,sys_fstat64) | |
f8cd3216 SR |
240 | SYSCALL(pciconfig_read) |
241 | SYSCALL(pciconfig_write) | |
242 | SYSCALL(pciconfig_iobase) | |
9994a338 PM |
243 | SYSCALL(ni_syscall) |
244 | SYSCALL(getdents64) | |
245 | SYSCALL(pivot_root) | |
246 | SYSX(sys_ni_syscall,compat_sys_fcntl64,sys_fcntl64) | |
247 | SYSCALL(madvise) | |
248 | SYSCALL(mincore) | |
249 | SYSCALL(gettid) | |
250 | SYSCALL(tkill) | |
251 | SYSCALL(setxattr) | |
252 | SYSCALL(lsetxattr) | |
253 | SYSCALL(fsetxattr) | |
254 | SYSCALL(getxattr) | |
255 | SYSCALL(lgetxattr) | |
256 | SYSCALL(fgetxattr) | |
257 | SYSCALL(listxattr) | |
258 | SYSCALL(llistxattr) | |
259 | SYSCALL(flistxattr) | |
260 | SYSCALL(removexattr) | |
261 | SYSCALL(lremovexattr) | |
262 | SYSCALL(fremovexattr) | |
263 | COMPAT_SYS(futex) | |
264 | COMPAT_SYS(sched_setaffinity) | |
265 | COMPAT_SYS(sched_getaffinity) | |
266 | SYSCALL(ni_syscall) | |
267 | SYSCALL(ni_syscall) | |
268 | SYS32ONLY(sendfile64) | |
269 | COMPAT_SYS(io_setup) | |
270 | SYSCALL(io_destroy) | |
271 | COMPAT_SYS(io_getevents) | |
272 | COMPAT_SYS(io_submit) | |
273 | SYSCALL(io_cancel) | |
274 | SYSCALL(set_tid_address) | |
275 | SYSX(sys_fadvise64,ppc32_fadvise64,sys_fadvise64) | |
276 | SYSCALL(exit_group) | |
277 | SYSX(sys_lookup_dcookie,ppc32_lookup_dcookie,sys_lookup_dcookie) | |
278 | SYSCALL(epoll_create) | |
279 | SYSCALL(epoll_ctl) | |
280 | SYSCALL(epoll_wait) | |
281 | SYSCALL(remap_file_pages) | |
3a0f69d5 | 282 | SYSX(sys_timer_create,compat_sys_timer_create,sys_timer_create) |
9994a338 PM |
283 | COMPAT_SYS(timer_settime) |
284 | COMPAT_SYS(timer_gettime) | |
285 | SYSCALL(timer_getoverrun) | |
286 | SYSCALL(timer_delete) | |
287 | COMPAT_SYS(clock_settime) | |
288 | COMPAT_SYS(clock_gettime) | |
289 | COMPAT_SYS(clock_getres) | |
290 | COMPAT_SYS(clock_nanosleep) | |
1bd79336 | 291 | SYSX(ppc64_swapcontext,ppc32_swapcontext,ppc_swapcontext) |
b09a4913 SR |
292 | COMPAT_SYS(tgkill) |
293 | COMPAT_SYS(utimes) | |
9994a338 PM |
294 | COMPAT_SYS(statfs64) |
295 | COMPAT_SYS(fstatfs64) | |
77f543cb | 296 | SYSX(sys_ni_syscall, ppc_fadvise64_64, ppc_fadvise64_64) |
9994a338 PM |
297 | PPC_SYS(rtas) |
298 | OLDSYS(debug_setcontext) | |
299 | SYSCALL(ni_syscall) | |
300 | SYSCALL(ni_syscall) | |
301 | COMPAT_SYS(mbind) | |
302 | COMPAT_SYS(get_mempolicy) | |
303 | COMPAT_SYS(set_mempolicy) | |
304 | COMPAT_SYS(mq_open) | |
305 | SYSCALL(mq_unlink) | |
306 | COMPAT_SYS(mq_timedsend) | |
307 | COMPAT_SYS(mq_timedreceive) | |
308 | COMPAT_SYS(mq_notify) | |
309 | COMPAT_SYS(mq_getsetattr) | |
310 | COMPAT_SYS(kexec_load) | |
b09a4913 SR |
311 | COMPAT_SYS(add_key) |
312 | COMPAT_SYS(request_key) | |
9994a338 PM |
313 | COMPAT_SYS(keyctl) |
314 | COMPAT_SYS(waitid) | |
b09a4913 SR |
315 | COMPAT_SYS(ioprio_set) |
316 | COMPAT_SYS(ioprio_get) | |
9994a338 PM |
317 | SYSCALL(inotify_init) |
318 | SYSCALL(inotify_add_watch) | |
319 | SYSCALL(inotify_rm_watch) | |
67207b96 AB |
320 | SYSCALL(spu_run) |
321 | SYSCALL(spu_create) | |
f27201da DW |
322 | COMPAT_SYS(pselect6) |
323 | COMPAT_SYS(ppoll) | |
b37ce281 | 324 | SYSCALL(unshare) |
b45e516f | 325 | SYSCALL(splice) |
70524490 | 326 | SYSCALL(tee) |
912d35f8 | 327 | SYSCALL(vmsplice) |
2833c28a AS |
328 | COMPAT_SYS(openat) |
329 | SYSCALL(mkdirat) | |
330 | SYSCALL(mknodat) | |
331 | SYSCALL(fchownat) | |
332 | COMPAT_SYS(futimesat) | |
333 | SYSX(sys_newfstatat, sys_fstatat64, sys_fstatat64) | |
334 | SYSCALL(unlinkat) | |
335 | SYSCALL(renameat) | |
336 | SYSCALL(linkat) | |
337 | SYSCALL(symlinkat) | |
338 | SYSCALL(readlinkat) | |
339 | SYSCALL(fchmodat) | |
340 | SYSCALL(faccessat) | |
0f041082 DW |
341 | COMPAT_SYS(get_robust_list) |
342 | COMPAT_SYS(set_robust_list) | |
23b2527d AB |
343 | |
344 | /* | |
345 | * please add new calls to arch/powerpc/platforms/cell/spu_callbacks.c | |
346 | * as well when appropriate. | |
347 | */ |