systbl.S 7.4 KB

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