systbl.S 7.6 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 SYSCALL32(func) .llong .sys_##func,.sys32_##func
  21. #define COMPAT_SYS(func) .llong .sys_##func,.compat_sys_##func
  22. #define PPC_SYS(func) .llong .ppc_##func,.ppc_##func
  23. #define OLDSYS(func) .llong .sys_ni_syscall,.sys_ni_syscall
  24. #define SYS32ONLY(func) .llong .sys_ni_syscall,.sys32_##func
  25. #define SYSX(f, f3264, f32) .llong .f,.f3264
  26. #else
  27. #define SYSCALL(func) .long sys_##func
  28. #define SYSCALL32(func) .long sys_##func
  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. #ifdef CONFIG_PPC64
  36. #define sys_sigpending sys_ni_syscall
  37. #define sys_old_getrlimit sys_ni_syscall
  38. #else
  39. #define ppc_rtas sys_ni_syscall
  40. #endif
  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)
  49. SYSCALL32(waitpid)
  50. SYSCALL32(creat)
  51. SYSCALL(link)
  52. SYSCALL(unlink)
  53. SYSCALL32(execve)
  54. SYSCALL(chdir)
  55. SYSX(sys64_time,compat_sys_time,sys_time)
  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)
  68. SYSCALL32(ptrace)
  69. SYSCALL(alarm)
  70. OLDSYS(fstat)
  71. SYSCALL32(pause)
  72. COMPAT_SYS(utime)
  73. SYSCALL(ni_syscall)
  74. SYSCALL(ni_syscall)
  75. SYSCALL32(access)
  76. SYSCALL32(nice)
  77. SYSCALL(ni_syscall)
  78. SYSCALL(sync)
  79. SYSCALL32(kill)
  80. SYSCALL(rename)
  81. SYSCALL32(mkdir)
  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)
  99. SYSCALL32(setpgid)
  100. SYSCALL(ni_syscall)
  101. SYSX(sys_ni_syscall,sys_olduname, sys_olduname)
  102. SYSCALL32(umask)
  103. SYSCALL(chroot)
  104. SYSCALL(ustat)
  105. SYSCALL(dup2)
  106. SYSCALL(getppid)
  107. SYSCALL(getpgrp)
  108. SYSCALL(setsid)
  109. SYS32ONLY(sigaction)
  110. SYSCALL(sgetmask)
  111. SYSCALL32(ssetmask)
  112. SYSCALL(setreuid)
  113. SYSCALL(setregid)
  114. SYSX(sys_ni_syscall,ppc32_sigsuspend,ppc_sigsuspend)
  115. COMPAT_SYS(sigpending)
  116. SYSCALL32(sethostname)
  117. COMPAT_SYS(setrlimit)
  118. COMPAT_SYS(old_getrlimit)
  119. COMPAT_SYS(getrusage)
  120. SYSCALL32(gettimeofday)
  121. SYSCALL32(settimeofday)
  122. SYSCALL32(getgroups)
  123. SYSCALL32(setgroups)
  124. SYSX(sys_ni_syscall,sys_ni_syscall,ppc_select)
  125. SYSCALL(symlink)
  126. OLDSYS(lstat)
  127. SYSCALL32(readlink)
  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)
  138. SYSCALL32(getpriority)
  139. SYSCALL32(setpriority)
  140. SYSCALL(ni_syscall)
  141. COMPAT_SYS(statfs)
  142. COMPAT_SYS(fstatfs)
  143. SYSCALL(ni_syscall)
  144. COMPAT_SYS(socketcall)
  145. SYSCALL32(syslog)
  146. COMPAT_SYS(setitimer)
  147. COMPAT_SYS(getitimer)
  148. COMPAT_SYS(newstat)
  149. COMPAT_SYS(newlstat)
  150. COMPAT_SYS(newfstat)
  151. SYSX(sys_ni_syscall,sys_uname,sys_uname)
  152. SYSCALL(ni_syscall)
  153. SYSCALL(vhangup)
  154. SYSCALL(ni_syscall)
  155. SYSCALL(ni_syscall)
  156. COMPAT_SYS(wait4)
  157. SYSCALL(swapoff)
  158. SYSCALL32(sysinfo)
  159. SYSCALL32(ipc)
  160. SYSCALL(fsync)
  161. SYSX(sys_ni_syscall,ppc32_sigreturn,sys_sigreturn)
  162. PPC_SYS(clone)
  163. SYSCALL32(setdomainname)
  164. PPC_SYS(newuname)
  165. SYSCALL(ni_syscall)
  166. SYSCALL32(adjtimex)
  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)
  174. SYSCALL32(getpgid)
  175. SYSCALL(fchdir)
  176. SYSCALL(bdflush)
  177. SYSCALL32(sysfs)
  178. SYSX(ppc64_personality,ppc64_personality,sys_personality)
  179. SYSCALL(ni_syscall)
  180. SYSCALL(setfsuid)
  181. SYSCALL(setfsgid)
  182. SYSCALL(llseek)
  183. SYSCALL32(getdents)
  184. SYSX(sys_select,ppc32_select,ppc_select)
  185. SYSCALL(flock)
  186. SYSCALL(msync)
  187. COMPAT_SYS(readv)
  188. COMPAT_SYS(writev)
  189. SYSCALL32(getsid)
  190. SYSCALL(fdatasync)
  191. SYSCALL32(sysctl)
  192. SYSCALL(mlock)
  193. SYSCALL(munlock)
  194. SYSCALL(mlockall)
  195. SYSCALL(munlockall)
  196. SYSCALL32(sched_setparam)
  197. SYSCALL32(sched_getparam)
  198. SYSCALL32(sched_setscheduler)
  199. SYSCALL32(sched_getscheduler)
  200. SYSCALL(sched_yield)
  201. SYSCALL32(sched_get_priority_max)
  202. SYSCALL32(sched_get_priority_min)
  203. SYSCALL32(sched_rr_get_interval)
  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)
  213. SYSCALL32(prctl)
  214. SYSX(ppc64_rt_sigreturn,ppc32_rt_sigreturn,sys_rt_sigreturn)
  215. SYSCALL32(rt_sigaction)
  216. SYSCALL32(rt_sigprocmask)
  217. SYSCALL32(rt_sigpending)
  218. COMPAT_SYS(rt_sigtimedwait)
  219. SYSCALL32(rt_sigqueueinfo)
  220. SYSX(ppc64_rt_sigsuspend,ppc32_rt_sigsuspend,ppc_rt_sigsuspend)
  221. SYSCALL32(pread64)
  222. SYSCALL32(pwrite64)
  223. SYSCALL(chown)
  224. SYSCALL(getcwd)
  225. SYSCALL(capget)
  226. SYSCALL(capset)
  227. SYSCALL32(sigaltstack)
  228. SYSX(sys_sendfile64,sys32_sendfile,sys_sendfile)
  229. SYSCALL(ni_syscall)
  230. SYSCALL(ni_syscall)
  231. PPC_SYS(vfork)
  232. COMPAT_SYS(getrlimit)
  233. SYSCALL32(readahead)
  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)
  240. SYSCALL32(pciconfig_read)
  241. SYSCALL32(pciconfig_write)
  242. SYSCALL32(pciconfig_iobase)
  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)
  282. SYSX(sys_timer_create,ppc32_timer_create,sys_timer_create)
  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)
  291. SYSX(ppc64_swapcontext,ppc32_swapcontext,ppc_swapcontext)
  292. SYSCALL32(tgkill)
  293. SYSCALL32(utimes)
  294. COMPAT_SYS(statfs64)
  295. COMPAT_SYS(fstatfs64)
  296. SYSX(sys_ni_syscall, ppc32_fadvise64_64, sys_fadvise64_64)
  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)
  311. SYSCALL32(add_key)
  312. SYSCALL32(request_key)
  313. COMPAT_SYS(keyctl)
  314. COMPAT_SYS(waitid)
  315. SYSCALL32(ioprio_set)
  316. SYSCALL32(ioprio_get)
  317. SYSCALL(inotify_init)
  318. SYSCALL(inotify_add_watch)
  319. SYSCALL(inotify_rm_watch)