compat_wrapper.S 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752
  1. /*
  2. * wrapper for 31 bit compatible system calls.
  3. *
  4. * Copyright IBM Corp. 2000, 2006
  5. * Author(s): Gerhard Tonn (ton@de.ibm.com),
  6. * Thomas Spatzier (tspat@de.ibm.com)
  7. */
  8. #include <linux/linkage.h>
  9. ENTRY(sys32_time_wrapper)
  10. llgtr %r2,%r2 # int *
  11. jg compat_sys_time # branch to system call
  12. #sys32_getpid_wrapper # void
  13. ENTRY(sys32_mount_wrapper)
  14. llgtr %r2,%r2 # char *
  15. llgtr %r3,%r3 # char *
  16. llgtr %r4,%r4 # char *
  17. llgfr %r5,%r5 # unsigned long
  18. llgtr %r6,%r6 # void *
  19. jg compat_sys_mount # branch to system call
  20. ENTRY(sys32_ptrace_wrapper)
  21. lgfr %r2,%r2 # long
  22. lgfr %r3,%r3 # long
  23. llgtr %r4,%r4 # long
  24. llgfr %r5,%r5 # long
  25. jg compat_sys_ptrace # branch to system call
  26. ENTRY(compat_sys_utime_wrapper)
  27. llgtr %r2,%r2 # char *
  28. llgtr %r3,%r3 # struct compat_utimbuf *
  29. jg compat_sys_utime # branch to system call
  30. ENTRY(compat_sys_times_wrapper)
  31. llgtr %r2,%r2 # struct compat_tms *
  32. jg compat_sys_times # branch to system call
  33. ENTRY(compat_sys_ioctl_wrapper)
  34. llgfr %r2,%r2 # unsigned int
  35. llgfr %r3,%r3 # unsigned int
  36. llgfr %r4,%r4 # unsigned int
  37. jg compat_sys_ioctl # branch to system call
  38. ENTRY(compat_sys_fcntl_wrapper)
  39. llgfr %r2,%r2 # unsigned int
  40. llgfr %r3,%r3 # unsigned int
  41. llgfr %r4,%r4 # unsigned long
  42. jg compat_sys_fcntl # branch to system call
  43. ENTRY(sys32_ustat_wrapper)
  44. llgfr %r2,%r2 # dev_t
  45. llgtr %r3,%r3 # struct ustat *
  46. jg compat_sys_ustat
  47. ENTRY(compat_sys_sigpending_wrapper)
  48. llgtr %r2,%r2 # compat_old_sigset_t *
  49. jg compat_sys_sigpending # branch to system call
  50. ENTRY(compat_sys_setrlimit_wrapper)
  51. llgfr %r2,%r2 # unsigned int
  52. llgtr %r3,%r3 # struct rlimit_emu31 *
  53. jg compat_sys_setrlimit # branch to system call
  54. ENTRY(compat_sys_old_getrlimit_wrapper)
  55. llgfr %r2,%r2 # unsigned int
  56. llgtr %r3,%r3 # struct rlimit_emu31 *
  57. jg compat_sys_old_getrlimit # branch to system call
  58. ENTRY(compat_sys_getrlimit_wrapper)
  59. llgfr %r2,%r2 # unsigned int
  60. llgtr %r3,%r3 # struct rlimit_emu31 *
  61. jg compat_sys_getrlimit # branch to system call
  62. ENTRY(compat_sys_gettimeofday_wrapper)
  63. llgtr %r2,%r2 # struct timeval_emu31 *
  64. llgtr %r3,%r3 # struct timezone *
  65. jg compat_sys_gettimeofday # branch to system call
  66. ENTRY(compat_sys_settimeofday_wrapper)
  67. llgtr %r2,%r2 # struct timeval_emu31 *
  68. llgtr %r3,%r3 # struct timezone *
  69. jg compat_sys_settimeofday # branch to system call
  70. ENTRY(old32_readdir_wrapper)
  71. llgfr %r2,%r2 # unsigned int
  72. llgtr %r3,%r3 # void *
  73. llgfr %r4,%r4 # unsigned int
  74. jg compat_sys_old_readdir # branch to system call
  75. ENTRY(compat_sys_statfs_wrapper)
  76. llgtr %r2,%r2 # char *
  77. llgtr %r3,%r3 # struct compat_statfs *
  78. jg compat_sys_statfs # branch to system call
  79. ENTRY(compat_sys_fstatfs_wrapper)
  80. llgfr %r2,%r2 # unsigned int
  81. llgtr %r3,%r3 # struct compat_statfs *
  82. jg compat_sys_fstatfs # branch to system call
  83. ENTRY(compat_sys_socketcall_wrapper)
  84. lgfr %r2,%r2 # int
  85. llgtr %r3,%r3 # u32 *
  86. jg compat_sys_socketcall # branch to system call
  87. ENTRY(compat_sys_newstat_wrapper)
  88. llgtr %r2,%r2 # char *
  89. llgtr %r3,%r3 # struct stat_emu31 *
  90. jg compat_sys_newstat # branch to system call
  91. ENTRY(compat_sys_newlstat_wrapper)
  92. llgtr %r2,%r2 # char *
  93. llgtr %r3,%r3 # struct stat_emu31 *
  94. jg compat_sys_newlstat # branch to system call
  95. ENTRY(compat_sys_newfstat_wrapper)
  96. llgfr %r2,%r2 # unsigned int
  97. llgtr %r3,%r3 # struct stat_emu31 *
  98. jg compat_sys_newfstat # branch to system call
  99. ENTRY(compat_sys_sysinfo_wrapper)
  100. llgtr %r2,%r2 # struct sysinfo_emu31 *
  101. jg compat_sys_sysinfo # branch to system call
  102. ENTRY(compat_sys_adjtimex_wrapper)
  103. llgtr %r2,%r2 # struct compat_timex *
  104. jg compat_sys_adjtimex # branch to system call
  105. ENTRY(sys32_getdents_wrapper)
  106. llgfr %r2,%r2 # unsigned int
  107. llgtr %r3,%r3 # void *
  108. llgfr %r4,%r4 # unsigned int
  109. jg compat_sys_getdents # branch to system call
  110. ENTRY(compat_sys_select_wrapper)
  111. lgfr %r2,%r2 # int
  112. llgtr %r3,%r3 # compat_fd_set *
  113. llgtr %r4,%r4 # compat_fd_set *
  114. llgtr %r5,%r5 # compat_fd_set *
  115. llgtr %r6,%r6 # struct compat_timeval *
  116. jg compat_sys_select # branch to system call
  117. ENTRY(compat_sys_readv_wrapper)
  118. lgfr %r2,%r2 # int
  119. llgtr %r3,%r3 # const struct compat_iovec *
  120. llgfr %r4,%r4 # unsigned long
  121. jg compat_sys_readv # branch to system call
  122. ENTRY(compat_sys_writev_wrapper)
  123. lgfr %r2,%r2 # int
  124. llgtr %r3,%r3 # const struct compat_iovec *
  125. llgfr %r4,%r4 # unsigned long
  126. jg compat_sys_writev # branch to system call
  127. ENTRY(compat_sys_nanosleep_wrapper)
  128. llgtr %r2,%r2 # struct compat_timespec *
  129. llgtr %r3,%r3 # struct compat_timespec *
  130. jg compat_sys_nanosleep # branch to system call
  131. ENTRY(sys32_getdents64_wrapper)
  132. llgfr %r2,%r2 # unsigned int
  133. llgtr %r3,%r3 # void *
  134. llgfr %r4,%r4 # unsigned int
  135. jg sys_getdents64 # branch to system call
  136. ENTRY(compat_sys_fcntl64_wrapper)
  137. llgfr %r2,%r2 # unsigned int
  138. llgfr %r3,%r3 # unsigned int
  139. llgfr %r4,%r4 # unsigned long
  140. jg compat_sys_fcntl64 # branch to system call
  141. ENTRY(sys32_stime_wrapper)
  142. llgtr %r2,%r2 # long *
  143. jg compat_sys_stime # branch to system call
  144. ENTRY(sys32_getxattr_wrapper)
  145. llgtr %r2,%r2 # char *
  146. llgtr %r3,%r3 # char *
  147. llgtr %r4,%r4 # void *
  148. llgfr %r5,%r5 # size_t
  149. jg sys_getxattr
  150. ENTRY(sys32_lgetxattr_wrapper)
  151. llgtr %r2,%r2 # char *
  152. llgtr %r3,%r3 # char *
  153. llgtr %r4,%r4 # void *
  154. llgfr %r5,%r5 # size_t
  155. jg sys_lgetxattr
  156. ENTRY(sys32_fgetxattr_wrapper)
  157. lgfr %r2,%r2 # int
  158. llgtr %r3,%r3 # char *
  159. llgtr %r4,%r4 # void *
  160. llgfr %r5,%r5 # size_t
  161. jg sys_fgetxattr
  162. ENTRY(sys32_listxattr_wrapper)
  163. llgtr %r2,%r2 # char *
  164. llgtr %r3,%r3 # char *
  165. llgfr %r4,%r4 # size_t
  166. jg sys_listxattr
  167. ENTRY(sys32_llistxattr_wrapper)
  168. llgtr %r2,%r2 # char *
  169. llgtr %r3,%r3 # char *
  170. llgfr %r4,%r4 # size_t
  171. jg sys_llistxattr
  172. ENTRY(sys32_flistxattr_wrapper)
  173. lgfr %r2,%r2 # int
  174. llgtr %r3,%r3 # char *
  175. llgfr %r4,%r4 # size_t
  176. jg sys_flistxattr
  177. ENTRY(sys32_removexattr_wrapper)
  178. llgtr %r2,%r2 # char *
  179. llgtr %r3,%r3 # char *
  180. jg sys_removexattr
  181. ENTRY(sys32_lremovexattr_wrapper)
  182. llgtr %r2,%r2 # char *
  183. llgtr %r3,%r3 # char *
  184. jg sys_lremovexattr
  185. ENTRY(sys32_fremovexattr_wrapper)
  186. lgfr %r2,%r2 # int
  187. llgtr %r3,%r3 # char *
  188. jg sys_fremovexattr
  189. ENTRY(sys32_sched_setaffinity_wrapper)
  190. lgfr %r2,%r2 # int
  191. llgfr %r3,%r3 # unsigned int
  192. llgtr %r4,%r4 # unsigned long *
  193. jg compat_sys_sched_setaffinity
  194. ENTRY(sys32_sched_getaffinity_wrapper)
  195. lgfr %r2,%r2 # int
  196. llgfr %r3,%r3 # unsigned int
  197. llgtr %r4,%r4 # unsigned long *
  198. jg compat_sys_sched_getaffinity
  199. ENTRY(sys32_exit_group_wrapper)
  200. lgfr %r2,%r2 # int
  201. jg sys_exit_group # branch to system call
  202. ENTRY(sys32_set_tid_address_wrapper)
  203. llgtr %r2,%r2 # int *
  204. jg sys_set_tid_address # branch to system call
  205. ENTRY(sys_epoll_create_wrapper)
  206. lgfr %r2,%r2 # int
  207. jg sys_epoll_create # branch to system call
  208. ENTRY(sys_epoll_ctl_wrapper)
  209. lgfr %r2,%r2 # int
  210. lgfr %r3,%r3 # int
  211. lgfr %r4,%r4 # int
  212. llgtr %r5,%r5 # struct epoll_event *
  213. jg sys_epoll_ctl # branch to system call
  214. ENTRY(sys_epoll_wait_wrapper)
  215. lgfr %r2,%r2 # int
  216. llgtr %r3,%r3 # struct epoll_event *
  217. lgfr %r4,%r4 # int
  218. lgfr %r5,%r5 # int
  219. jg sys_epoll_wait # branch to system call
  220. ENTRY(sys32_clock_settime_wrapper)
  221. lgfr %r2,%r2 # clockid_t (int)
  222. llgtr %r3,%r3 # struct compat_timespec *
  223. jg compat_sys_clock_settime
  224. ENTRY(sys32_clock_gettime_wrapper)
  225. lgfr %r2,%r2 # clockid_t (int)
  226. llgtr %r3,%r3 # struct compat_timespec *
  227. jg compat_sys_clock_gettime
  228. ENTRY(sys32_clock_getres_wrapper)
  229. lgfr %r2,%r2 # clockid_t (int)
  230. llgtr %r3,%r3 # struct compat_timespec *
  231. jg compat_sys_clock_getres
  232. ENTRY(sys32_clock_nanosleep_wrapper)
  233. lgfr %r2,%r2 # clockid_t (int)
  234. lgfr %r3,%r3 # int
  235. llgtr %r4,%r4 # struct compat_timespec *
  236. llgtr %r5,%r5 # struct compat_timespec *
  237. jg compat_sys_clock_nanosleep
  238. ENTRY(sys32_timer_create_wrapper)
  239. lgfr %r2,%r2 # timer_t (int)
  240. llgtr %r3,%r3 # struct compat_sigevent *
  241. llgtr %r4,%r4 # timer_t *
  242. jg compat_sys_timer_create
  243. ENTRY(sys32_timer_settime_wrapper)
  244. lgfr %r2,%r2 # timer_t (int)
  245. lgfr %r3,%r3 # int
  246. llgtr %r4,%r4 # struct compat_itimerspec *
  247. llgtr %r5,%r5 # struct compat_itimerspec *
  248. jg compat_sys_timer_settime
  249. ENTRY(sys32_timer_gettime_wrapper)
  250. lgfr %r2,%r2 # timer_t (int)
  251. llgtr %r3,%r3 # struct compat_itimerspec *
  252. jg compat_sys_timer_gettime
  253. ENTRY(sys32_timer_getoverrun_wrapper)
  254. lgfr %r2,%r2 # timer_t (int)
  255. jg sys_timer_getoverrun
  256. ENTRY(sys32_timer_delete_wrapper)
  257. lgfr %r2,%r2 # timer_t (int)
  258. jg sys_timer_delete
  259. ENTRY(sys32_io_setup_wrapper)
  260. llgfr %r2,%r2 # unsigned int
  261. llgtr %r3,%r3 # u32 *
  262. jg compat_sys_io_setup
  263. ENTRY(sys32_io_destroy_wrapper)
  264. llgfr %r2,%r2 # (aio_context_t) u32
  265. jg sys_io_destroy
  266. ENTRY(sys32_io_getevents_wrapper)
  267. llgfr %r2,%r2 # (aio_context_t) u32
  268. lgfr %r3,%r3 # long
  269. lgfr %r4,%r4 # long
  270. llgtr %r5,%r5 # struct io_event *
  271. llgtr %r6,%r6 # struct compat_timespec *
  272. jg compat_sys_io_getevents
  273. ENTRY(sys32_io_submit_wrapper)
  274. llgfr %r2,%r2 # (aio_context_t) u32
  275. lgfr %r3,%r3 # long
  276. llgtr %r4,%r4 # struct iocb **
  277. jg compat_sys_io_submit
  278. ENTRY(sys32_io_cancel_wrapper)
  279. llgfr %r2,%r2 # (aio_context_t) u32
  280. llgtr %r3,%r3 # struct iocb *
  281. llgtr %r4,%r4 # struct io_event *
  282. jg sys_io_cancel
  283. ENTRY(compat_sys_statfs64_wrapper)
  284. llgtr %r2,%r2 # const char *
  285. llgfr %r3,%r3 # compat_size_t
  286. llgtr %r4,%r4 # struct compat_statfs64 *
  287. jg compat_sys_statfs64
  288. ENTRY(compat_sys_fstatfs64_wrapper)
  289. llgfr %r2,%r2 # unsigned int fd
  290. llgfr %r3,%r3 # compat_size_t
  291. llgtr %r4,%r4 # struct compat_statfs64 *
  292. jg compat_sys_fstatfs64
  293. ENTRY(compat_sys_mq_open_wrapper)
  294. llgtr %r2,%r2 # const char *
  295. lgfr %r3,%r3 # int
  296. llgfr %r4,%r4 # mode_t
  297. llgtr %r5,%r5 # struct compat_mq_attr *
  298. jg compat_sys_mq_open
  299. ENTRY(sys32_mq_unlink_wrapper)
  300. llgtr %r2,%r2 # const char *
  301. jg sys_mq_unlink
  302. ENTRY(compat_sys_mq_timedsend_wrapper)
  303. lgfr %r2,%r2 # mqd_t
  304. llgtr %r3,%r3 # const char *
  305. llgfr %r4,%r4 # size_t
  306. llgfr %r5,%r5 # unsigned int
  307. llgtr %r6,%r6 # const struct compat_timespec *
  308. jg compat_sys_mq_timedsend
  309. ENTRY(compat_sys_mq_timedreceive_wrapper)
  310. lgfr %r2,%r2 # mqd_t
  311. llgtr %r3,%r3 # char *
  312. llgfr %r4,%r4 # size_t
  313. llgtr %r5,%r5 # unsigned int *
  314. llgtr %r6,%r6 # const struct compat_timespec *
  315. jg compat_sys_mq_timedreceive
  316. ENTRY(compat_sys_mq_notify_wrapper)
  317. lgfr %r2,%r2 # mqd_t
  318. llgtr %r3,%r3 # struct compat_sigevent *
  319. jg compat_sys_mq_notify
  320. ENTRY(compat_sys_mq_getsetattr_wrapper)
  321. lgfr %r2,%r2 # mqd_t
  322. llgtr %r3,%r3 # struct compat_mq_attr *
  323. llgtr %r4,%r4 # struct compat_mq_attr *
  324. jg compat_sys_mq_getsetattr
  325. ENTRY(compat_sys_add_key_wrapper)
  326. llgtr %r2,%r2 # const char *
  327. llgtr %r3,%r3 # const char *
  328. llgtr %r4,%r4 # const void *
  329. llgfr %r5,%r5 # size_t
  330. llgfr %r6,%r6 # (key_serial_t) u32
  331. jg sys_add_key
  332. ENTRY(compat_sys_request_key_wrapper)
  333. llgtr %r2,%r2 # const char *
  334. llgtr %r3,%r3 # const char *
  335. llgtr %r4,%r4 # const void *
  336. llgfr %r5,%r5 # (key_serial_t) u32
  337. jg sys_request_key
  338. ENTRY(sys32_remap_file_pages_wrapper)
  339. llgfr %r2,%r2 # unsigned long
  340. llgfr %r3,%r3 # unsigned long
  341. llgfr %r4,%r4 # unsigned long
  342. llgfr %r5,%r5 # unsigned long
  343. llgfr %r6,%r6 # unsigned long
  344. jg sys_remap_file_pages
  345. ENTRY(compat_sys_kexec_load_wrapper)
  346. llgfr %r2,%r2 # unsigned long
  347. llgfr %r3,%r3 # unsigned long
  348. llgtr %r4,%r4 # struct kexec_segment *
  349. llgfr %r5,%r5 # unsigned long
  350. jg compat_sys_kexec_load
  351. ENTRY(sys_ioprio_set_wrapper)
  352. lgfr %r2,%r2 # int
  353. lgfr %r3,%r3 # int
  354. lgfr %r4,%r4 # int
  355. jg sys_ioprio_set
  356. ENTRY(sys_ioprio_get_wrapper)
  357. lgfr %r2,%r2 # int
  358. lgfr %r3,%r3 # int
  359. jg sys_ioprio_get
  360. ENTRY(sys_inotify_add_watch_wrapper)
  361. lgfr %r2,%r2 # int
  362. llgtr %r3,%r3 # const char *
  363. llgfr %r4,%r4 # u32
  364. jg sys_inotify_add_watch
  365. ENTRY(sys_inotify_rm_watch_wrapper)
  366. lgfr %r2,%r2 # int
  367. llgfr %r3,%r3 # u32
  368. jg sys_inotify_rm_watch
  369. ENTRY(sys_mkdirat_wrapper)
  370. lgfr %r2,%r2 # int
  371. llgtr %r3,%r3 # const char *
  372. lgfr %r4,%r4 # int
  373. jg sys_mkdirat
  374. ENTRY(sys_mknodat_wrapper)
  375. lgfr %r2,%r2 # int
  376. llgtr %r3,%r3 # const char *
  377. lgfr %r4,%r4 # int
  378. llgfr %r5,%r5 # unsigned int
  379. jg sys_mknodat
  380. ENTRY(sys_fchownat_wrapper)
  381. lgfr %r2,%r2 # int
  382. llgtr %r3,%r3 # const char *
  383. llgfr %r4,%r4 # uid_t
  384. llgfr %r5,%r5 # gid_t
  385. lgfr %r6,%r6 # int
  386. jg sys_fchownat
  387. ENTRY(compat_sys_futimesat_wrapper)
  388. llgfr %r2,%r2 # unsigned int
  389. llgtr %r3,%r3 # char *
  390. llgtr %r4,%r4 # struct timeval *
  391. jg compat_sys_futimesat
  392. ENTRY(sys_unlinkat_wrapper)
  393. lgfr %r2,%r2 # int
  394. llgtr %r3,%r3 # const char *
  395. lgfr %r4,%r4 # int
  396. jg sys_unlinkat
  397. ENTRY(sys_renameat_wrapper)
  398. lgfr %r2,%r2 # int
  399. llgtr %r3,%r3 # const char *
  400. lgfr %r4,%r4 # int
  401. llgtr %r5,%r5 # const char *
  402. jg sys_renameat
  403. ENTRY(sys_linkat_wrapper)
  404. lgfr %r2,%r2 # int
  405. llgtr %r3,%r3 # const char *
  406. lgfr %r4,%r4 # int
  407. llgtr %r5,%r5 # const char *
  408. lgfr %r6,%r6 # int
  409. jg sys_linkat
  410. ENTRY(sys_symlinkat_wrapper)
  411. llgtr %r2,%r2 # const char *
  412. lgfr %r3,%r3 # int
  413. llgtr %r4,%r4 # const char *
  414. jg sys_symlinkat
  415. ENTRY(sys_readlinkat_wrapper)
  416. lgfr %r2,%r2 # int
  417. llgtr %r3,%r3 # const char *
  418. llgtr %r4,%r4 # char *
  419. lgfr %r5,%r5 # int
  420. jg sys_readlinkat
  421. ENTRY(sys_fchmodat_wrapper)
  422. lgfr %r2,%r2 # int
  423. llgtr %r3,%r3 # const char *
  424. llgfr %r4,%r4 # mode_t
  425. jg sys_fchmodat
  426. ENTRY(sys_faccessat_wrapper)
  427. lgfr %r2,%r2 # int
  428. llgtr %r3,%r3 # const char *
  429. lgfr %r4,%r4 # int
  430. jg sys_faccessat
  431. ENTRY(compat_sys_pselect6_wrapper)
  432. lgfr %r2,%r2 # int
  433. llgtr %r3,%r3 # fd_set *
  434. llgtr %r4,%r4 # fd_set *
  435. llgtr %r5,%r5 # fd_set *
  436. llgtr %r6,%r6 # struct timespec *
  437. llgt %r0,164(%r15) # void *
  438. stg %r0,160(%r15)
  439. jg compat_sys_pselect6
  440. ENTRY(compat_sys_ppoll_wrapper)
  441. llgtr %r2,%r2 # struct pollfd *
  442. llgfr %r3,%r3 # unsigned int
  443. llgtr %r4,%r4 # struct timespec *
  444. llgtr %r5,%r5 # const sigset_t *
  445. llgfr %r6,%r6 # size_t
  446. jg compat_sys_ppoll
  447. ENTRY(sys_unshare_wrapper)
  448. llgfr %r2,%r2 # unsigned long
  449. jg sys_unshare
  450. ENTRY(sys_splice_wrapper)
  451. lgfr %r2,%r2 # int
  452. llgtr %r3,%r3 # loff_t *
  453. lgfr %r4,%r4 # int
  454. llgtr %r5,%r5 # loff_t *
  455. llgfr %r6,%r6 # size_t
  456. llgf %r0,164(%r15) # unsigned int
  457. stg %r0,160(%r15)
  458. jg sys_splice
  459. ENTRY(sys_sync_file_range_wrapper)
  460. lgfr %r2,%r2 # int
  461. sllg %r3,%r3,32 # get high word of 64bit loff_t
  462. or %r3,%r4 # get low word of 64bit loff_t
  463. sllg %r4,%r5,32 # get high word of 64bit loff_t
  464. or %r4,%r6 # get low word of 64bit loff_t
  465. llgf %r5,164(%r15) # unsigned int
  466. jg sys_sync_file_range
  467. ENTRY(sys_tee_wrapper)
  468. lgfr %r2,%r2 # int
  469. lgfr %r3,%r3 # int
  470. llgfr %r4,%r4 # size_t
  471. llgfr %r5,%r5 # unsigned int
  472. jg sys_tee
  473. ENTRY(sys_getcpu_wrapper)
  474. llgtr %r2,%r2 # unsigned *
  475. llgtr %r3,%r3 # unsigned *
  476. llgtr %r4,%r4 # struct getcpu_cache *
  477. jg sys_getcpu
  478. ENTRY(compat_sys_utimes_wrapper)
  479. llgtr %r2,%r2 # char *
  480. llgtr %r3,%r3 # struct compat_timeval *
  481. jg compat_sys_utimes
  482. ENTRY(compat_sys_utimensat_wrapper)
  483. llgfr %r2,%r2 # unsigned int
  484. llgtr %r3,%r3 # char *
  485. llgtr %r4,%r4 # struct compat_timespec *
  486. lgfr %r5,%r5 # int
  487. jg compat_sys_utimensat
  488. ENTRY(sys_eventfd_wrapper)
  489. llgfr %r2,%r2 # unsigned int
  490. jg sys_eventfd
  491. ENTRY(sys_fallocate_wrapper)
  492. lgfr %r2,%r2 # int
  493. lgfr %r3,%r3 # int
  494. sllg %r4,%r4,32 # get high word of 64bit loff_t
  495. lr %r4,%r5 # get low word of 64bit loff_t
  496. sllg %r5,%r6,32 # get high word of 64bit loff_t
  497. l %r5,164(%r15) # get low word of 64bit loff_t
  498. jg sys_fallocate
  499. ENTRY(sys_timerfd_create_wrapper)
  500. lgfr %r2,%r2 # int
  501. lgfr %r3,%r3 # int
  502. jg sys_timerfd_create
  503. ENTRY(sys_eventfd2_wrapper)
  504. llgfr %r2,%r2 # unsigned int
  505. lgfr %r3,%r3 # int
  506. jg sys_eventfd2
  507. ENTRY(sys_inotify_init1_wrapper)
  508. lgfr %r2,%r2 # int
  509. jg sys_inotify_init1
  510. ENTRY(sys_pipe2_wrapper)
  511. llgtr %r2,%r2 # u32 *
  512. lgfr %r3,%r3 # int
  513. jg sys_pipe2 # branch to system call
  514. ENTRY(sys_dup3_wrapper)
  515. llgfr %r2,%r2 # unsigned int
  516. llgfr %r3,%r3 # unsigned int
  517. lgfr %r4,%r4 # int
  518. jg sys_dup3 # branch to system call
  519. ENTRY(sys_epoll_create1_wrapper)
  520. lgfr %r2,%r2 # int
  521. jg sys_epoll_create1 # branch to system call
  522. ENTRY(sys_tkill_wrapper)
  523. lgfr %r2,%r2 # pid_t
  524. lgfr %r3,%r3 # int
  525. jg sys_tkill # branch to system call
  526. ENTRY(sys_tgkill_wrapper)
  527. lgfr %r2,%r2 # pid_t
  528. lgfr %r3,%r3 # pid_t
  529. lgfr %r4,%r4 # int
  530. jg sys_tgkill # branch to system call
  531. ENTRY(compat_sys_keyctl_wrapper)
  532. llgfr %r2,%r2 # u32
  533. llgfr %r3,%r3 # u32
  534. llgfr %r4,%r4 # u32
  535. llgfr %r5,%r5 # u32
  536. llgfr %r6,%r6 # u32
  537. jg compat_sys_keyctl # branch to system call
  538. ENTRY(sys_perf_event_open_wrapper)
  539. llgtr %r2,%r2 # const struct perf_event_attr *
  540. lgfr %r3,%r3 # pid_t
  541. lgfr %r4,%r4 # int
  542. lgfr %r5,%r5 # int
  543. llgfr %r6,%r6 # unsigned long
  544. jg sys_perf_event_open # branch to system call
  545. ENTRY(sys_clone_wrapper)
  546. llgfr %r2,%r2 # unsigned long
  547. llgfr %r3,%r3 # unsigned long
  548. llgtr %r4,%r4 # int *
  549. llgtr %r5,%r5 # int *
  550. jg sys_clone # branch to system call
  551. ENTRY(sys32_execve_wrapper)
  552. llgtr %r2,%r2 # char *
  553. llgtr %r3,%r3 # compat_uptr_t *
  554. llgtr %r4,%r4 # compat_uptr_t *
  555. jg compat_sys_execve # branch to system call
  556. ENTRY(sys_fanotify_init_wrapper)
  557. llgfr %r2,%r2 # unsigned int
  558. llgfr %r3,%r3 # unsigned int
  559. jg sys_fanotify_init # branch to system call
  560. ENTRY(sys_prlimit64_wrapper)
  561. lgfr %r2,%r2 # pid_t
  562. llgfr %r3,%r3 # unsigned int
  563. llgtr %r4,%r4 # const struct rlimit64 __user *
  564. llgtr %r5,%r5 # struct rlimit64 __user *
  565. jg sys_prlimit64 # branch to system call
  566. ENTRY(sys_name_to_handle_at_wrapper)
  567. lgfr %r2,%r2 # int
  568. llgtr %r3,%r3 # const char __user *
  569. llgtr %r4,%r4 # struct file_handle __user *
  570. llgtr %r5,%r5 # int __user *
  571. lgfr %r6,%r6 # int
  572. jg sys_name_to_handle_at
  573. ENTRY(compat_sys_clock_adjtime_wrapper)
  574. lgfr %r2,%r2 # clockid_t (int)
  575. llgtr %r3,%r3 # struct compat_timex __user *
  576. jg compat_sys_clock_adjtime
  577. ENTRY(sys_syncfs_wrapper)
  578. lgfr %r2,%r2 # int
  579. jg sys_syncfs
  580. ENTRY(sys_setns_wrapper)
  581. lgfr %r2,%r2 # int
  582. lgfr %r3,%r3 # int
  583. jg sys_setns
  584. ENTRY(compat_sys_process_vm_readv_wrapper)
  585. lgfr %r2,%r2 # compat_pid_t
  586. llgtr %r3,%r3 # struct compat_iovec __user *
  587. llgfr %r4,%r4 # unsigned long
  588. llgtr %r5,%r5 # struct compat_iovec __user *
  589. llgfr %r6,%r6 # unsigned long
  590. llgf %r0,164(%r15) # unsigned long
  591. stg %r0,160(%r15)
  592. jg compat_sys_process_vm_readv
  593. ENTRY(compat_sys_process_vm_writev_wrapper)
  594. lgfr %r2,%r2 # compat_pid_t
  595. llgtr %r3,%r3 # struct compat_iovec __user *
  596. llgfr %r4,%r4 # unsigned long
  597. llgtr %r5,%r5 # struct compat_iovec __user *
  598. llgfr %r6,%r6 # unsigned long
  599. llgf %r0,164(%r15) # unsigned long
  600. stg %r0,160(%r15)
  601. jg compat_sys_process_vm_writev
  602. ENTRY(sys_s390_runtime_instr_wrapper)
  603. lgfr %r2,%r2 # int
  604. lgfr %r3,%r3 # int
  605. jg sys_s390_runtime_instr
  606. ENTRY(sys_kcmp_wrapper)
  607. lgfr %r2,%r2 # pid_t
  608. lgfr %r3,%r3 # pid_t
  609. lgfr %r4,%r4 # int
  610. llgfr %r5,%r5 # unsigned long
  611. llgfr %r6,%r6 # unsigned long
  612. jg sys_kcmp
  613. ENTRY(sys_finit_module_wrapper)
  614. lgfr %r2,%r2 # int
  615. llgtr %r3,%r3 # const char __user *
  616. lgfr %r4,%r4 # int
  617. jg sys_finit_module
  618. ENTRY(sys_sched_setattr_wrapper)
  619. lgfr %r2,%r2 # pid_t
  620. llgtr %r3,%r3 # struct sched_attr __user *
  621. jg sys_sched_setattr
  622. ENTRY(sys_sched_getattr_wrapper)
  623. lgfr %r2,%r2 # pid_t
  624. llgtr %r3,%r3 # const char __user *
  625. llgfr %r4,%r4 # unsigned int
  626. jg sys_sched_getattr