blob: 8a9f994ed9170ec6e0a934db1c7671771ad5019e [file] [log] [blame]
Paul Mackerras9994a332005-10-10 22:36:14 +10001/*
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
Paul Mackerras9994a332005-10-10 22:36:14 +100022#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
Stephen Rothwellb09a4912005-10-18 14:51:57 +100025#define SYS32ONLY(func) .llong .sys_ni_syscall,.compat_sys_##func
Paul Mackerras9994a332005-10-10 22:36:14 +100026#define SYSX(f, f3264, f32) .llong .f,.f3264
27#else
28#define SYSCALL(func) .long sys_##func
Paul Mackerras9994a332005-10-10 22:36:14 +100029#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
Paul Mackerras9994a332005-10-10 22:36:14 +100039#endif
40
41_GLOBAL(sys_call_table)
42SYSCALL(restart_syscall)
43SYSCALL(exit)
44PPC_SYS(fork)
45SYSCALL(read)
46SYSCALL(write)
47COMPAT_SYS(open)
48SYSCALL(close)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100049COMPAT_SYS(waitpid)
50COMPAT_SYS(creat)
Paul Mackerras9994a332005-10-10 22:36:14 +100051SYSCALL(link)
52SYSCALL(unlink)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100053COMPAT_SYS(execve)
Paul Mackerras9994a332005-10-10 22:36:14 +100054SYSCALL(chdir)
Anton Blanchard002ec582006-01-07 00:49:49 +110055COMPAT_SYS(time)
Paul Mackerras9994a332005-10-10 22:36:14 +100056SYSCALL(mknod)
57SYSCALL(chmod)
58SYSCALL(lchown)
59SYSCALL(ni_syscall)
60OLDSYS(stat)
61SYSX(sys_lseek,ppc32_lseek,sys_lseek)
62SYSCALL(getpid)
63COMPAT_SYS(mount)
64SYSX(sys_ni_syscall,sys_oldumount,sys_oldumount)
65SYSCALL(setuid)
66SYSCALL(getuid)
67COMPAT_SYS(stime)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100068COMPAT_SYS(ptrace)
Paul Mackerras9994a332005-10-10 22:36:14 +100069SYSCALL(alarm)
70OLDSYS(fstat)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100071COMPAT_SYS(pause)
Paul Mackerras9994a332005-10-10 22:36:14 +100072COMPAT_SYS(utime)
73SYSCALL(ni_syscall)
74SYSCALL(ni_syscall)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100075COMPAT_SYS(access)
76COMPAT_SYS(nice)
Paul Mackerras9994a332005-10-10 22:36:14 +100077SYSCALL(ni_syscall)
78SYSCALL(sync)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100079COMPAT_SYS(kill)
Paul Mackerras9994a332005-10-10 22:36:14 +100080SYSCALL(rename)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100081COMPAT_SYS(mkdir)
Paul Mackerras9994a332005-10-10 22:36:14 +100082SYSCALL(rmdir)
83SYSCALL(dup)
84SYSCALL(pipe)
85COMPAT_SYS(times)
86SYSCALL(ni_syscall)
87SYSCALL(brk)
88SYSCALL(setgid)
89SYSCALL(getgid)
90SYSCALL(signal)
91SYSCALL(geteuid)
92SYSCALL(getegid)
93SYSCALL(acct)
94SYSCALL(umount)
95SYSCALL(ni_syscall)
96COMPAT_SYS(ioctl)
97COMPAT_SYS(fcntl)
98SYSCALL(ni_syscall)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100099COMPAT_SYS(setpgid)
Paul Mackerras9994a332005-10-10 22:36:14 +1000100SYSCALL(ni_syscall)
Paul Mackerras30286ef2005-10-17 20:10:13 +1000101SYSX(sys_ni_syscall,sys_olduname, sys_olduname)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000102COMPAT_SYS(umask)
Paul Mackerras9994a332005-10-10 22:36:14 +1000103SYSCALL(chroot)
104SYSCALL(ustat)
105SYSCALL(dup2)
106SYSCALL(getppid)
107SYSCALL(getpgrp)
108SYSCALL(setsid)
109SYS32ONLY(sigaction)
110SYSCALL(sgetmask)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000111COMPAT_SYS(ssetmask)
Paul Mackerras9994a332005-10-10 22:36:14 +1000112SYSCALL(setreuid)
113SYSCALL(setregid)
David Woodhouse401d1f02005-11-15 18:52:18 +0000114SYS32ONLY(sigsuspend)
Paul Mackerras9994a332005-10-10 22:36:14 +1000115COMPAT_SYS(sigpending)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000116COMPAT_SYS(sethostname)
Paul Mackerras9994a332005-10-10 22:36:14 +1000117COMPAT_SYS(setrlimit)
118COMPAT_SYS(old_getrlimit)
119COMPAT_SYS(getrusage)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000120COMPAT_SYS(gettimeofday)
121COMPAT_SYS(settimeofday)
122COMPAT_SYS(getgroups)
123COMPAT_SYS(setgroups)
Paul Mackerras9994a332005-10-10 22:36:14 +1000124SYSX(sys_ni_syscall,sys_ni_syscall,ppc_select)
125SYSCALL(symlink)
126OLDSYS(lstat)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000127COMPAT_SYS(readlink)
Paul Mackerras9994a332005-10-10 22:36:14 +1000128SYSCALL(uselib)
129SYSCALL(swapon)
130SYSCALL(reboot)
131SYSX(sys_ni_syscall,old32_readdir,old_readdir)
132SYSCALL(mmap)
133SYSCALL(munmap)
134SYSCALL(truncate)
135SYSCALL(ftruncate)
136SYSCALL(fchmod)
137SYSCALL(fchown)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000138COMPAT_SYS(getpriority)
139COMPAT_SYS(setpriority)
Paul Mackerras9994a332005-10-10 22:36:14 +1000140SYSCALL(ni_syscall)
141COMPAT_SYS(statfs)
142COMPAT_SYS(fstatfs)
143SYSCALL(ni_syscall)
144COMPAT_SYS(socketcall)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000145COMPAT_SYS(syslog)
Paul Mackerras9994a332005-10-10 22:36:14 +1000146COMPAT_SYS(setitimer)
147COMPAT_SYS(getitimer)
148COMPAT_SYS(newstat)
149COMPAT_SYS(newlstat)
150COMPAT_SYS(newfstat)
Paul Mackerras30286ef2005-10-17 20:10:13 +1000151SYSX(sys_ni_syscall,sys_uname,sys_uname)
Paul Mackerras9994a332005-10-10 22:36:14 +1000152SYSCALL(ni_syscall)
153SYSCALL(vhangup)
154SYSCALL(ni_syscall)
155SYSCALL(ni_syscall)
156COMPAT_SYS(wait4)
157SYSCALL(swapoff)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000158COMPAT_SYS(sysinfo)
159COMPAT_SYS(ipc)
Paul Mackerras9994a332005-10-10 22:36:14 +1000160SYSCALL(fsync)
David Woodhouse401d1f02005-11-15 18:52:18 +0000161SYS32ONLY(sigreturn)
Paul Mackerras9994a332005-10-10 22:36:14 +1000162PPC_SYS(clone)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000163COMPAT_SYS(setdomainname)
Paul Mackerras30286ef2005-10-17 20:10:13 +1000164PPC_SYS(newuname)
Paul Mackerras9994a332005-10-10 22:36:14 +1000165SYSCALL(ni_syscall)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000166COMPAT_SYS(adjtimex)
Paul Mackerras9994a332005-10-10 22:36:14 +1000167SYSCALL(mprotect)
168SYSX(sys_ni_syscall,compat_sys_sigprocmask,sys_sigprocmask)
169SYSCALL(ni_syscall)
170SYSCALL(init_module)
171SYSCALL(delete_module)
172SYSCALL(ni_syscall)
173SYSCALL(quotactl)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000174COMPAT_SYS(getpgid)
Paul Mackerras9994a332005-10-10 22:36:14 +1000175SYSCALL(fchdir)
176SYSCALL(bdflush)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000177COMPAT_SYS(sysfs)
Paul Mackerras9994a332005-10-10 22:36:14 +1000178SYSX(ppc64_personality,ppc64_personality,sys_personality)
179SYSCALL(ni_syscall)
180SYSCALL(setfsuid)
181SYSCALL(setfsgid)
182SYSCALL(llseek)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000183COMPAT_SYS(getdents)
Paul Mackerras9994a332005-10-10 22:36:14 +1000184SYSX(sys_select,ppc32_select,ppc_select)
185SYSCALL(flock)
186SYSCALL(msync)
187COMPAT_SYS(readv)
188COMPAT_SYS(writev)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000189COMPAT_SYS(getsid)
Paul Mackerras9994a332005-10-10 22:36:14 +1000190SYSCALL(fdatasync)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000191COMPAT_SYS(sysctl)
Paul Mackerras9994a332005-10-10 22:36:14 +1000192SYSCALL(mlock)
193SYSCALL(munlock)
194SYSCALL(mlockall)
195SYSCALL(munlockall)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000196COMPAT_SYS(sched_setparam)
197COMPAT_SYS(sched_getparam)
198COMPAT_SYS(sched_setscheduler)
199COMPAT_SYS(sched_getscheduler)
Paul Mackerras9994a332005-10-10 22:36:14 +1000200SYSCALL(sched_yield)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000201COMPAT_SYS(sched_get_priority_max)
202COMPAT_SYS(sched_get_priority_min)
203COMPAT_SYS(sched_rr_get_interval)
Paul Mackerras9994a332005-10-10 22:36:14 +1000204COMPAT_SYS(nanosleep)
205SYSCALL(mremap)
206SYSCALL(setresuid)
207SYSCALL(getresuid)
208SYSCALL(ni_syscall)
209SYSCALL(poll)
210COMPAT_SYS(nfsservctl)
211SYSCALL(setresgid)
212SYSCALL(getresgid)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000213COMPAT_SYS(prctl)
David Woodhouse401d1f02005-11-15 18:52:18 +0000214COMPAT_SYS(rt_sigreturn)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000215COMPAT_SYS(rt_sigaction)
216COMPAT_SYS(rt_sigprocmask)
217COMPAT_SYS(rt_sigpending)
Paul Mackerras9994a332005-10-10 22:36:14 +1000218COMPAT_SYS(rt_sigtimedwait)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000219COMPAT_SYS(rt_sigqueueinfo)
David Woodhouse401d1f02005-11-15 18:52:18 +0000220COMPAT_SYS(rt_sigsuspend)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000221COMPAT_SYS(pread64)
222COMPAT_SYS(pwrite64)
Paul Mackerras9994a332005-10-10 22:36:14 +1000223SYSCALL(chown)
224SYSCALL(getcwd)
225SYSCALL(capget)
226SYSCALL(capset)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000227COMPAT_SYS(sigaltstack)
228SYSX(sys_sendfile64,compat_sys_sendfile,sys_sendfile)
Paul Mackerras9994a332005-10-10 22:36:14 +1000229SYSCALL(ni_syscall)
230SYSCALL(ni_syscall)
231PPC_SYS(vfork)
232COMPAT_SYS(getrlimit)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000233COMPAT_SYS(readahead)
Paul Mackerras9994a332005-10-10 22:36:14 +1000234SYS32ONLY(mmap2)
235SYS32ONLY(truncate64)
236SYS32ONLY(ftruncate64)
237SYSX(sys_ni_syscall,sys_stat64,sys_stat64)
238SYSX(sys_ni_syscall,sys_lstat64,sys_lstat64)
239SYSX(sys_ni_syscall,sys_fstat64,sys_fstat64)
Stephen Rothwellf8cd3212006-01-10 10:36:14 +1100240SYSCALL(pciconfig_read)
241SYSCALL(pciconfig_write)
242SYSCALL(pciconfig_iobase)
Paul Mackerras9994a332005-10-10 22:36:14 +1000243SYSCALL(ni_syscall)
244SYSCALL(getdents64)
245SYSCALL(pivot_root)
246SYSX(sys_ni_syscall,compat_sys_fcntl64,sys_fcntl64)
247SYSCALL(madvise)
248SYSCALL(mincore)
249SYSCALL(gettid)
250SYSCALL(tkill)
251SYSCALL(setxattr)
252SYSCALL(lsetxattr)
253SYSCALL(fsetxattr)
254SYSCALL(getxattr)
255SYSCALL(lgetxattr)
256SYSCALL(fgetxattr)
257SYSCALL(listxattr)
258SYSCALL(llistxattr)
259SYSCALL(flistxattr)
260SYSCALL(removexattr)
261SYSCALL(lremovexattr)
262SYSCALL(fremovexattr)
263COMPAT_SYS(futex)
264COMPAT_SYS(sched_setaffinity)
265COMPAT_SYS(sched_getaffinity)
266SYSCALL(ni_syscall)
267SYSCALL(ni_syscall)
268SYS32ONLY(sendfile64)
269COMPAT_SYS(io_setup)
270SYSCALL(io_destroy)
271COMPAT_SYS(io_getevents)
272COMPAT_SYS(io_submit)
273SYSCALL(io_cancel)
274SYSCALL(set_tid_address)
275SYSX(sys_fadvise64,ppc32_fadvise64,sys_fadvise64)
276SYSCALL(exit_group)
277SYSX(sys_lookup_dcookie,ppc32_lookup_dcookie,sys_lookup_dcookie)
278SYSCALL(epoll_create)
279SYSCALL(epoll_ctl)
280SYSCALL(epoll_wait)
281SYSCALL(remap_file_pages)
Christoph Hellwig3a0f69d2006-01-09 20:52:08 -0800282SYSX(sys_timer_create,compat_sys_timer_create,sys_timer_create)
Paul Mackerras9994a332005-10-10 22:36:14 +1000283COMPAT_SYS(timer_settime)
284COMPAT_SYS(timer_gettime)
285SYSCALL(timer_getoverrun)
286SYSCALL(timer_delete)
287COMPAT_SYS(clock_settime)
288COMPAT_SYS(clock_gettime)
289COMPAT_SYS(clock_getres)
290COMPAT_SYS(clock_nanosleep)
David Woodhouse401d1f02005-11-15 18:52:18 +0000291COMPAT_SYS(swapcontext)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000292COMPAT_SYS(tgkill)
293COMPAT_SYS(utimes)
Paul Mackerras9994a332005-10-10 22:36:14 +1000294COMPAT_SYS(statfs64)
295COMPAT_SYS(fstatfs64)
Paul Mackerras77f543c2005-10-18 14:19:41 +1000296SYSX(sys_ni_syscall, ppc_fadvise64_64, ppc_fadvise64_64)
Paul Mackerras9994a332005-10-10 22:36:14 +1000297PPC_SYS(rtas)
298OLDSYS(debug_setcontext)
299SYSCALL(ni_syscall)
300SYSCALL(ni_syscall)
301COMPAT_SYS(mbind)
302COMPAT_SYS(get_mempolicy)
303COMPAT_SYS(set_mempolicy)
304COMPAT_SYS(mq_open)
305SYSCALL(mq_unlink)
306COMPAT_SYS(mq_timedsend)
307COMPAT_SYS(mq_timedreceive)
308COMPAT_SYS(mq_notify)
309COMPAT_SYS(mq_getsetattr)
310COMPAT_SYS(kexec_load)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000311COMPAT_SYS(add_key)
312COMPAT_SYS(request_key)
Paul Mackerras9994a332005-10-10 22:36:14 +1000313COMPAT_SYS(keyctl)
314COMPAT_SYS(waitid)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000315COMPAT_SYS(ioprio_set)
316COMPAT_SYS(ioprio_get)
Paul Mackerras9994a332005-10-10 22:36:14 +1000317SYSCALL(inotify_init)
318SYSCALL(inotify_add_watch)
319SYSCALL(inotify_rm_watch)
Arnd Bergmann67207b92005-11-15 15:53:48 -0500320SYSCALL(spu_run)
321SYSCALL(spu_create)
David Woodhousef27201d2006-01-18 17:44:01 -0800322COMPAT_SYS(pselect6)
323COMPAT_SYS(ppoll)
JANAK DESAIb37ce282006-02-07 12:59:11 -0800324SYSCALL(unshare)