blob: 989f6286991a9a7aeb0d105b8dbca7d059101a3f [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
39#else
40#define ppc_rtas sys_ni_syscall
41#endif
42
43_GLOBAL(sys_call_table)
44SYSCALL(restart_syscall)
45SYSCALL(exit)
46PPC_SYS(fork)
47SYSCALL(read)
48SYSCALL(write)
49COMPAT_SYS(open)
50SYSCALL(close)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100051COMPAT_SYS(waitpid)
52COMPAT_SYS(creat)
Paul Mackerras9994a332005-10-10 22:36:14 +100053SYSCALL(link)
54SYSCALL(unlink)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100055COMPAT_SYS(execve)
Paul Mackerras9994a332005-10-10 22:36:14 +100056SYSCALL(chdir)
57SYSX(sys64_time,compat_sys_time,sys_time)
58SYSCALL(mknod)
59SYSCALL(chmod)
60SYSCALL(lchown)
61SYSCALL(ni_syscall)
62OLDSYS(stat)
63SYSX(sys_lseek,ppc32_lseek,sys_lseek)
64SYSCALL(getpid)
65COMPAT_SYS(mount)
66SYSX(sys_ni_syscall,sys_oldumount,sys_oldumount)
67SYSCALL(setuid)
68SYSCALL(getuid)
69COMPAT_SYS(stime)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100070COMPAT_SYS(ptrace)
Paul Mackerras9994a332005-10-10 22:36:14 +100071SYSCALL(alarm)
72OLDSYS(fstat)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100073COMPAT_SYS(pause)
Paul Mackerras9994a332005-10-10 22:36:14 +100074COMPAT_SYS(utime)
75SYSCALL(ni_syscall)
76SYSCALL(ni_syscall)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100077COMPAT_SYS(access)
78COMPAT_SYS(nice)
Paul Mackerras9994a332005-10-10 22:36:14 +100079SYSCALL(ni_syscall)
80SYSCALL(sync)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100081COMPAT_SYS(kill)
Paul Mackerras9994a332005-10-10 22:36:14 +100082SYSCALL(rename)
Stephen Rothwellb09a4912005-10-18 14:51:57 +100083COMPAT_SYS(mkdir)
Paul Mackerras9994a332005-10-10 22:36:14 +100084SYSCALL(rmdir)
85SYSCALL(dup)
86SYSCALL(pipe)
87COMPAT_SYS(times)
88SYSCALL(ni_syscall)
89SYSCALL(brk)
90SYSCALL(setgid)
91SYSCALL(getgid)
92SYSCALL(signal)
93SYSCALL(geteuid)
94SYSCALL(getegid)
95SYSCALL(acct)
96SYSCALL(umount)
97SYSCALL(ni_syscall)
98COMPAT_SYS(ioctl)
99COMPAT_SYS(fcntl)
100SYSCALL(ni_syscall)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000101COMPAT_SYS(setpgid)
Paul Mackerras9994a332005-10-10 22:36:14 +1000102SYSCALL(ni_syscall)
Paul Mackerras30286ef2005-10-17 20:10:13 +1000103SYSX(sys_ni_syscall,sys_olduname, sys_olduname)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000104COMPAT_SYS(umask)
Paul Mackerras9994a332005-10-10 22:36:14 +1000105SYSCALL(chroot)
106SYSCALL(ustat)
107SYSCALL(dup2)
108SYSCALL(getppid)
109SYSCALL(getpgrp)
110SYSCALL(setsid)
111SYS32ONLY(sigaction)
112SYSCALL(sgetmask)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000113COMPAT_SYS(ssetmask)
Paul Mackerras9994a332005-10-10 22:36:14 +1000114SYSCALL(setreuid)
115SYSCALL(setregid)
David Woodhouse401d1f02005-11-15 18:52:18 +0000116SYS32ONLY(sigsuspend)
Paul Mackerras9994a332005-10-10 22:36:14 +1000117COMPAT_SYS(sigpending)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000118COMPAT_SYS(sethostname)
Paul Mackerras9994a332005-10-10 22:36:14 +1000119COMPAT_SYS(setrlimit)
120COMPAT_SYS(old_getrlimit)
121COMPAT_SYS(getrusage)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000122COMPAT_SYS(gettimeofday)
123COMPAT_SYS(settimeofday)
124COMPAT_SYS(getgroups)
125COMPAT_SYS(setgroups)
Paul Mackerras9994a332005-10-10 22:36:14 +1000126SYSX(sys_ni_syscall,sys_ni_syscall,ppc_select)
127SYSCALL(symlink)
128OLDSYS(lstat)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000129COMPAT_SYS(readlink)
Paul Mackerras9994a332005-10-10 22:36:14 +1000130SYSCALL(uselib)
131SYSCALL(swapon)
132SYSCALL(reboot)
133SYSX(sys_ni_syscall,old32_readdir,old_readdir)
134SYSCALL(mmap)
135SYSCALL(munmap)
136SYSCALL(truncate)
137SYSCALL(ftruncate)
138SYSCALL(fchmod)
139SYSCALL(fchown)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000140COMPAT_SYS(getpriority)
141COMPAT_SYS(setpriority)
Paul Mackerras9994a332005-10-10 22:36:14 +1000142SYSCALL(ni_syscall)
143COMPAT_SYS(statfs)
144COMPAT_SYS(fstatfs)
145SYSCALL(ni_syscall)
146COMPAT_SYS(socketcall)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000147COMPAT_SYS(syslog)
Paul Mackerras9994a332005-10-10 22:36:14 +1000148COMPAT_SYS(setitimer)
149COMPAT_SYS(getitimer)
150COMPAT_SYS(newstat)
151COMPAT_SYS(newlstat)
152COMPAT_SYS(newfstat)
Paul Mackerras30286ef2005-10-17 20:10:13 +1000153SYSX(sys_ni_syscall,sys_uname,sys_uname)
Paul Mackerras9994a332005-10-10 22:36:14 +1000154SYSCALL(ni_syscall)
155SYSCALL(vhangup)
156SYSCALL(ni_syscall)
157SYSCALL(ni_syscall)
158COMPAT_SYS(wait4)
159SYSCALL(swapoff)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000160COMPAT_SYS(sysinfo)
161COMPAT_SYS(ipc)
Paul Mackerras9994a332005-10-10 22:36:14 +1000162SYSCALL(fsync)
David Woodhouse401d1f02005-11-15 18:52:18 +0000163SYS32ONLY(sigreturn)
Paul Mackerras9994a332005-10-10 22:36:14 +1000164PPC_SYS(clone)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000165COMPAT_SYS(setdomainname)
Paul Mackerras30286ef2005-10-17 20:10:13 +1000166PPC_SYS(newuname)
Paul Mackerras9994a332005-10-10 22:36:14 +1000167SYSCALL(ni_syscall)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000168COMPAT_SYS(adjtimex)
Paul Mackerras9994a332005-10-10 22:36:14 +1000169SYSCALL(mprotect)
170SYSX(sys_ni_syscall,compat_sys_sigprocmask,sys_sigprocmask)
171SYSCALL(ni_syscall)
172SYSCALL(init_module)
173SYSCALL(delete_module)
174SYSCALL(ni_syscall)
175SYSCALL(quotactl)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000176COMPAT_SYS(getpgid)
Paul Mackerras9994a332005-10-10 22:36:14 +1000177SYSCALL(fchdir)
178SYSCALL(bdflush)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000179COMPAT_SYS(sysfs)
Paul Mackerras9994a332005-10-10 22:36:14 +1000180SYSX(ppc64_personality,ppc64_personality,sys_personality)
181SYSCALL(ni_syscall)
182SYSCALL(setfsuid)
183SYSCALL(setfsgid)
184SYSCALL(llseek)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000185COMPAT_SYS(getdents)
Paul Mackerras9994a332005-10-10 22:36:14 +1000186SYSX(sys_select,ppc32_select,ppc_select)
187SYSCALL(flock)
188SYSCALL(msync)
189COMPAT_SYS(readv)
190COMPAT_SYS(writev)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000191COMPAT_SYS(getsid)
Paul Mackerras9994a332005-10-10 22:36:14 +1000192SYSCALL(fdatasync)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000193COMPAT_SYS(sysctl)
Paul Mackerras9994a332005-10-10 22:36:14 +1000194SYSCALL(mlock)
195SYSCALL(munlock)
196SYSCALL(mlockall)
197SYSCALL(munlockall)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000198COMPAT_SYS(sched_setparam)
199COMPAT_SYS(sched_getparam)
200COMPAT_SYS(sched_setscheduler)
201COMPAT_SYS(sched_getscheduler)
Paul Mackerras9994a332005-10-10 22:36:14 +1000202SYSCALL(sched_yield)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000203COMPAT_SYS(sched_get_priority_max)
204COMPAT_SYS(sched_get_priority_min)
205COMPAT_SYS(sched_rr_get_interval)
Paul Mackerras9994a332005-10-10 22:36:14 +1000206COMPAT_SYS(nanosleep)
207SYSCALL(mremap)
208SYSCALL(setresuid)
209SYSCALL(getresuid)
210SYSCALL(ni_syscall)
211SYSCALL(poll)
212COMPAT_SYS(nfsservctl)
213SYSCALL(setresgid)
214SYSCALL(getresgid)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000215COMPAT_SYS(prctl)
David Woodhouse401d1f02005-11-15 18:52:18 +0000216COMPAT_SYS(rt_sigreturn)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000217COMPAT_SYS(rt_sigaction)
218COMPAT_SYS(rt_sigprocmask)
219COMPAT_SYS(rt_sigpending)
Paul Mackerras9994a332005-10-10 22:36:14 +1000220COMPAT_SYS(rt_sigtimedwait)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000221COMPAT_SYS(rt_sigqueueinfo)
David Woodhouse401d1f02005-11-15 18:52:18 +0000222COMPAT_SYS(rt_sigsuspend)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000223COMPAT_SYS(pread64)
224COMPAT_SYS(pwrite64)
Paul Mackerras9994a332005-10-10 22:36:14 +1000225SYSCALL(chown)
226SYSCALL(getcwd)
227SYSCALL(capget)
228SYSCALL(capset)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000229COMPAT_SYS(sigaltstack)
230SYSX(sys_sendfile64,compat_sys_sendfile,sys_sendfile)
Paul Mackerras9994a332005-10-10 22:36:14 +1000231SYSCALL(ni_syscall)
232SYSCALL(ni_syscall)
233PPC_SYS(vfork)
234COMPAT_SYS(getrlimit)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000235COMPAT_SYS(readahead)
Paul Mackerras9994a332005-10-10 22:36:14 +1000236SYS32ONLY(mmap2)
237SYS32ONLY(truncate64)
238SYS32ONLY(ftruncate64)
239SYSX(sys_ni_syscall,sys_stat64,sys_stat64)
240SYSX(sys_ni_syscall,sys_lstat64,sys_lstat64)
241SYSX(sys_ni_syscall,sys_fstat64,sys_fstat64)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000242COMPAT_SYS(pciconfig_read)
243COMPAT_SYS(pciconfig_write)
244COMPAT_SYS(pciconfig_iobase)
Paul Mackerras9994a332005-10-10 22:36:14 +1000245SYSCALL(ni_syscall)
246SYSCALL(getdents64)
247SYSCALL(pivot_root)
248SYSX(sys_ni_syscall,compat_sys_fcntl64,sys_fcntl64)
249SYSCALL(madvise)
250SYSCALL(mincore)
251SYSCALL(gettid)
252SYSCALL(tkill)
253SYSCALL(setxattr)
254SYSCALL(lsetxattr)
255SYSCALL(fsetxattr)
256SYSCALL(getxattr)
257SYSCALL(lgetxattr)
258SYSCALL(fgetxattr)
259SYSCALL(listxattr)
260SYSCALL(llistxattr)
261SYSCALL(flistxattr)
262SYSCALL(removexattr)
263SYSCALL(lremovexattr)
264SYSCALL(fremovexattr)
265COMPAT_SYS(futex)
266COMPAT_SYS(sched_setaffinity)
267COMPAT_SYS(sched_getaffinity)
268SYSCALL(ni_syscall)
269SYSCALL(ni_syscall)
270SYS32ONLY(sendfile64)
271COMPAT_SYS(io_setup)
272SYSCALL(io_destroy)
273COMPAT_SYS(io_getevents)
274COMPAT_SYS(io_submit)
275SYSCALL(io_cancel)
276SYSCALL(set_tid_address)
277SYSX(sys_fadvise64,ppc32_fadvise64,sys_fadvise64)
278SYSCALL(exit_group)
279SYSX(sys_lookup_dcookie,ppc32_lookup_dcookie,sys_lookup_dcookie)
280SYSCALL(epoll_create)
281SYSCALL(epoll_ctl)
282SYSCALL(epoll_wait)
283SYSCALL(remap_file_pages)
284SYSX(sys_timer_create,ppc32_timer_create,sys_timer_create)
285COMPAT_SYS(timer_settime)
286COMPAT_SYS(timer_gettime)
287SYSCALL(timer_getoverrun)
288SYSCALL(timer_delete)
289COMPAT_SYS(clock_settime)
290COMPAT_SYS(clock_gettime)
291COMPAT_SYS(clock_getres)
292COMPAT_SYS(clock_nanosleep)
David Woodhouse401d1f02005-11-15 18:52:18 +0000293COMPAT_SYS(swapcontext)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000294COMPAT_SYS(tgkill)
295COMPAT_SYS(utimes)
Paul Mackerras9994a332005-10-10 22:36:14 +1000296COMPAT_SYS(statfs64)
297COMPAT_SYS(fstatfs64)
Paul Mackerras77f543c2005-10-18 14:19:41 +1000298SYSX(sys_ni_syscall, ppc_fadvise64_64, ppc_fadvise64_64)
Paul Mackerras9994a332005-10-10 22:36:14 +1000299PPC_SYS(rtas)
300OLDSYS(debug_setcontext)
301SYSCALL(ni_syscall)
302SYSCALL(ni_syscall)
303COMPAT_SYS(mbind)
304COMPAT_SYS(get_mempolicy)
305COMPAT_SYS(set_mempolicy)
306COMPAT_SYS(mq_open)
307SYSCALL(mq_unlink)
308COMPAT_SYS(mq_timedsend)
309COMPAT_SYS(mq_timedreceive)
310COMPAT_SYS(mq_notify)
311COMPAT_SYS(mq_getsetattr)
312COMPAT_SYS(kexec_load)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000313COMPAT_SYS(add_key)
314COMPAT_SYS(request_key)
Paul Mackerras9994a332005-10-10 22:36:14 +1000315COMPAT_SYS(keyctl)
316COMPAT_SYS(waitid)
Stephen Rothwellb09a4912005-10-18 14:51:57 +1000317COMPAT_SYS(ioprio_set)
318COMPAT_SYS(ioprio_get)
Paul Mackerras9994a332005-10-10 22:36:14 +1000319SYSCALL(inotify_init)
320SYSCALL(inotify_add_watch)
321SYSCALL(inotify_rm_watch)
Arnd Bergmann67207b92005-11-15 15:53:48 -0500322SYSCALL(spu_run)
323SYSCALL(spu_create)