1/*
2*  arch/s390/kernel/compat_wrapper.S
3*    wrapper for 31 bit compatible system calls.
4*
5*    Copyright (C) IBM Corp. 2000,2006
6*    Author(s): Gerhard Tonn (ton@de.ibm.com),
7*		Thomas Spatzier (tspat@de.ibm.com)
8*/
9
10#include <linux/linkage.h>
11
12ENTRY(sys32_exit_wrapper)
13	lgfr	%r2,%r2			# int
14	jg	sys_exit		# branch to sys_exit
15
16ENTRY(sys32_read_wrapper)
17	llgfr	%r2,%r2			# unsigned int
18	llgtr	%r3,%r3			# char *
19	llgfr	%r4,%r4			# size_t
20	jg	sys32_read		# branch to sys_read
21
22ENTRY(sys32_write_wrapper)
23	llgfr	%r2,%r2			# unsigned int
24	llgtr	%r3,%r3			# const char *
25	llgfr	%r4,%r4			# size_t
26	jg	sys32_write		# branch to system call
27
28ENTRY(sys32_open_wrapper)
29	llgtr	%r2,%r2			# const char *
30	lgfr	%r3,%r3			# int
31	lgfr	%r4,%r4			# int
32	jg	sys_open		# branch to system call
33
34ENTRY(sys32_close_wrapper)
35	llgfr	%r2,%r2			# unsigned int
36	jg	sys_close		# branch to system call
37
38ENTRY(sys32_creat_wrapper)
39	llgtr	%r2,%r2			# const char *
40	lgfr	%r3,%r3			# int
41	jg	sys_creat		# branch to system call
42
43ENTRY(sys32_link_wrapper)
44	llgtr	%r2,%r2			# const char *
45	llgtr	%r3,%r3			# const char *
46	jg	sys_link		# branch to system call
47
48ENTRY(sys32_unlink_wrapper)
49	llgtr	%r2,%r2			# const char *
50	jg	sys_unlink		# branch to system call
51
52ENTRY(sys32_chdir_wrapper)
53	llgtr	%r2,%r2			# const char *
54	jg	sys_chdir		# branch to system call
55
56ENTRY(sys32_time_wrapper)
57	llgtr	%r2,%r2			# int *
58	jg	compat_sys_time		# branch to system call
59
60ENTRY(sys32_mknod_wrapper)
61	llgtr	%r2,%r2			# const char *
62	lgfr	%r3,%r3			# int
63	llgfr	%r4,%r4			# dev
64	jg	sys_mknod		# branch to system call
65
66ENTRY(sys32_chmod_wrapper)
67	llgtr	%r2,%r2			# const char *
68	llgfr	%r3,%r3			# mode_t
69	jg	sys_chmod		# branch to system call
70
71ENTRY(sys32_lchown16_wrapper)
72	llgtr	%r2,%r2			# const char *
73	llgfr	%r3,%r3			# __kernel_old_uid_emu31_t
74	llgfr	%r4,%r4			# __kernel_old_uid_emu31_t
75	jg	sys32_lchown16		# branch to system call
76
77ENTRY(sys32_lseek_wrapper)
78	llgfr	%r2,%r2			# unsigned int
79	lgfr	%r3,%r3			# off_t
80	llgfr	%r4,%r4			# unsigned int
81	jg	sys_lseek		# branch to system call
82
83#sys32_getpid_wrapper				# void
84
85ENTRY(sys32_mount_wrapper)
86	llgtr	%r2,%r2			# char *
87	llgtr	%r3,%r3			# char *
88	llgtr	%r4,%r4			# char *
89	llgfr	%r5,%r5			# unsigned long
90	llgtr	%r6,%r6			# void *
91	jg	compat_sys_mount	# branch to system call
92
93ENTRY(sys32_oldumount_wrapper)
94	llgtr	%r2,%r2			# char *
95	jg	sys_oldumount		# branch to system call
96
97ENTRY(sys32_setuid16_wrapper)
98	llgfr	%r2,%r2			# __kernel_old_uid_emu31_t
99	jg	sys32_setuid16		# branch to system call
100
101#sys32_getuid16_wrapper			# void
102
103ENTRY(sys32_ptrace_wrapper)
104	lgfr	%r2,%r2			# long
105	lgfr	%r3,%r3			# long
106	llgtr	%r4,%r4			# long
107	llgfr	%r5,%r5			# long
108	jg	compat_sys_ptrace	# branch to system call
109
110ENTRY(sys32_alarm_wrapper)
111	llgfr	%r2,%r2			# unsigned int
112	jg	sys_alarm		# branch to system call
113
114ENTRY(compat_sys_utime_wrapper)
115	llgtr	%r2,%r2			# char *
116	llgtr	%r3,%r3			# struct compat_utimbuf *
117	jg	compat_sys_utime	# branch to system call
118
119ENTRY(sys32_access_wrapper)
120	llgtr	%r2,%r2			# const char *
121	lgfr	%r3,%r3			# int
122	jg	sys_access		# branch to system call
123
124ENTRY(sys32_nice_wrapper)
125	lgfr	%r2,%r2			# int
126	jg	sys_nice		# branch to system call
127
128#sys32_sync_wrapper			# void
129
130ENTRY(sys32_kill_wrapper)
131	lgfr	%r2,%r2			# int
132	lgfr	%r3,%r3			# int
133	jg	sys_kill		# branch to system call
134
135ENTRY(sys32_rename_wrapper)
136	llgtr	%r2,%r2			# const char *
137	llgtr	%r3,%r3			# const char *
138	jg	sys_rename		# branch to system call
139
140ENTRY(sys32_mkdir_wrapper)
141	llgtr	%r2,%r2			# const char *
142	lgfr	%r3,%r3			# int
143	jg	sys_mkdir		# branch to system call
144
145ENTRY(sys32_rmdir_wrapper)
146	llgtr	%r2,%r2			# const char *
147	jg	sys_rmdir		# branch to system call
148
149ENTRY(sys32_dup_wrapper)
150	llgfr	%r2,%r2			# unsigned int
151	jg	sys_dup			# branch to system call
152
153ENTRY(sys32_pipe_wrapper)
154	llgtr	%r2,%r2			# u32 *
155	jg	sys_pipe		# branch to system call
156
157ENTRY(compat_sys_times_wrapper)
158	llgtr	%r2,%r2			# struct compat_tms *
159	jg	compat_sys_times	# branch to system call
160
161ENTRY(sys32_brk_wrapper)
162	llgtr	%r2,%r2			# unsigned long
163	jg	sys_brk			# branch to system call
164
165ENTRY(sys32_setgid16_wrapper)
166	llgfr	%r2,%r2			# __kernel_old_gid_emu31_t
167	jg	sys32_setgid16		# branch to system call
168
169#sys32_getgid16_wrapper			# void
170
171ENTRY(sys32_signal_wrapper)
172	lgfr	%r2,%r2			# int
173	llgtr	%r3,%r3			# __sighandler_t
174	jg	sys_signal
175
176#sys32_geteuid16_wrapper		# void
177
178#sys32_getegid16_wrapper		# void
179
180ENTRY(sys32_acct_wrapper)
181	llgtr	%r2,%r2			# char *
182	jg	sys_acct		# branch to system call
183
184ENTRY(sys32_umount_wrapper)
185	llgtr	%r2,%r2			# char *
186	lgfr	%r3,%r3			# int
187	jg	sys_umount		# branch to system call
188
189ENTRY(compat_sys_ioctl_wrapper)
190	llgfr	%r2,%r2			# unsigned int
191	llgfr	%r3,%r3			# unsigned int
192	llgfr	%r4,%r4			# unsigned int
193	jg	compat_sys_ioctl	# branch to system call
194
195ENTRY(compat_sys_fcntl_wrapper)
196	llgfr	%r2,%r2			# unsigned int
197	llgfr	%r3,%r3			# unsigned int
198	llgfr	%r4,%r4			# unsigned long
199	jg	compat_sys_fcntl	# branch to system call
200
201ENTRY(sys32_setpgid_wrapper)
202	lgfr	%r2,%r2			# pid_t
203	lgfr	%r3,%r3			# pid_t
204	jg	sys_setpgid		# branch to system call
205
206ENTRY(sys32_umask_wrapper)
207	lgfr	%r2,%r2			# int
208	jg	sys_umask		# branch to system call
209
210ENTRY(sys32_chroot_wrapper)
211	llgtr	%r2,%r2			# char *
212	jg	sys_chroot		# branch to system call
213
214ENTRY(sys32_ustat_wrapper)
215	llgfr	%r2,%r2			# dev_t
216	llgtr	%r3,%r3			# struct ustat *
217	jg	compat_sys_ustat
218
219ENTRY(sys32_dup2_wrapper)
220	llgfr	%r2,%r2			# unsigned int
221	llgfr	%r3,%r3			# unsigned int
222	jg	sys_dup2		# branch to system call
223
224#sys32_getppid_wrapper			# void
225
226#sys32_getpgrp_wrapper			# void
227
228#sys32_setsid_wrapper			# void
229
230ENTRY(sys32_sigaction_wrapper)
231	lgfr	%r2,%r2			# int
232	llgtr	%r3,%r3			# const struct old_sigaction *
233	llgtr	%r4,%r4			# struct old_sigaction32 *
234	jg	sys32_sigaction		# branch to system call
235
236ENTRY(sys32_setreuid16_wrapper)
237	llgfr	%r2,%r2			# __kernel_old_uid_emu31_t
238	llgfr	%r3,%r3			# __kernel_old_uid_emu31_t
239	jg	sys32_setreuid16	# branch to system call
240
241ENTRY(sys32_setregid16_wrapper)
242	llgfr	%r2,%r2			# __kernel_old_gid_emu31_t
243	llgfr	%r3,%r3			# __kernel_old_gid_emu31_t
244	jg	sys32_setregid16	# branch to system call
245
246ENTRY(sys_sigsuspend_wrapper)
247	lgfr	%r2,%r2			# int
248	lgfr	%r3,%r3			# int
249	llgfr	%r4,%r4			# old_sigset_t
250	jg	sys_sigsuspend
251
252ENTRY(compat_sys_sigpending_wrapper)
253	llgtr	%r2,%r2			# compat_old_sigset_t *
254	jg	compat_sys_sigpending	# branch to system call
255
256ENTRY(sys32_sethostname_wrapper)
257	llgtr	%r2,%r2			# char *
258	lgfr	%r3,%r3			# int
259	jg	sys_sethostname		# branch to system call
260
261ENTRY(compat_sys_setrlimit_wrapper)
262	llgfr	%r2,%r2			# unsigned int
263	llgtr	%r3,%r3			# struct rlimit_emu31 *
264	jg	compat_sys_setrlimit	# branch to system call
265
266ENTRY(compat_sys_old_getrlimit_wrapper)
267	llgfr	%r2,%r2			# unsigned int
268	llgtr	%r3,%r3			# struct rlimit_emu31 *
269	jg	compat_sys_old_getrlimit # branch to system call
270
271ENTRY(compat_sys_getrlimit_wrapper)
272	llgfr	%r2,%r2			# unsigned int
273	llgtr	%r3,%r3			# struct rlimit_emu31 *
274	jg	compat_sys_getrlimit	# branch to system call
275
276ENTRY(sys32_mmap2_wrapper)
277	llgtr	%r2,%r2			# struct mmap_arg_struct_emu31 *
278	jg	sys32_mmap2			# branch to system call
279
280ENTRY(compat_sys_getrusage_wrapper)
281	lgfr	%r2,%r2			# int
282	llgtr	%r3,%r3			# struct rusage_emu31 *
283	jg	compat_sys_getrusage	# branch to system call
284
285ENTRY(compat_sys_gettimeofday_wrapper)
286	llgtr	%r2,%r2			# struct timeval_emu31 *
287	llgtr	%r3,%r3			# struct timezone *
288	jg	compat_sys_gettimeofday	# branch to system call
289
290ENTRY(compat_sys_settimeofday_wrapper)
291	llgtr	%r2,%r2			# struct timeval_emu31 *
292	llgtr	%r3,%r3			# struct timezone *
293	jg	compat_sys_settimeofday	# branch to system call
294
295ENTRY(sys32_getgroups16_wrapper)
296	lgfr	%r2,%r2			# int
297	llgtr	%r3,%r3			# __kernel_old_gid_emu31_t *
298	jg	sys32_getgroups16	# branch to system call
299
300ENTRY(sys32_setgroups16_wrapper)
301	lgfr	%r2,%r2			# int
302	llgtr	%r3,%r3			# __kernel_old_gid_emu31_t *
303	jg	sys32_setgroups16	# branch to system call
304
305ENTRY(sys32_symlink_wrapper)
306	llgtr	%r2,%r2			# const char *
307	llgtr	%r3,%r3			# const char *
308	jg	sys_symlink		# branch to system call
309
310ENTRY(sys32_readlink_wrapper)
311	llgtr	%r2,%r2			# const char *
312	llgtr	%r3,%r3			# char *
313	lgfr	%r4,%r4			# int
314	jg	sys_readlink		# branch to system call
315
316ENTRY(sys32_uselib_wrapper)
317	llgtr	%r2,%r2			# const char *
318	jg	sys_uselib		# branch to system call
319
320ENTRY(sys32_swapon_wrapper)
321	llgtr	%r2,%r2			# const char *
322	lgfr	%r3,%r3			# int
323	jg	sys_swapon		# branch to system call
324
325ENTRY(sys32_reboot_wrapper)
326	lgfr	%r2,%r2			# int
327	lgfr	%r3,%r3			# int
328	llgfr	%r4,%r4			# unsigned int
329	llgtr	%r5,%r5			# void *
330	jg	sys_reboot		# branch to system call
331
332ENTRY(old32_readdir_wrapper)
333	llgfr	%r2,%r2			# unsigned int
334	llgtr	%r3,%r3			# void *
335	llgfr	%r4,%r4			# unsigned int
336	jg	compat_sys_old_readdir	# branch to system call
337
338ENTRY(old32_mmap_wrapper)
339	llgtr	%r2,%r2			# struct mmap_arg_struct_emu31 *
340	jg	old32_mmap		# branch to system call
341
342ENTRY(sys32_munmap_wrapper)
343	llgfr	%r2,%r2			# unsigned long
344	llgfr	%r3,%r3			# size_t
345	jg	sys_munmap		# branch to system call
346
347ENTRY(sys32_truncate_wrapper)
348	llgtr	%r2,%r2			# const char *
349	lgfr	%r3,%r3			# long
350	jg	sys_truncate		# branch to system call
351
352ENTRY(sys32_ftruncate_wrapper)
353	llgfr	%r2,%r2			# unsigned int
354	llgfr	%r3,%r3			# unsigned long
355	jg	sys_ftruncate		# branch to system call
356
357ENTRY(sys32_fchmod_wrapper)
358	llgfr	%r2,%r2			# unsigned int
359	llgfr	%r3,%r3			# mode_t
360	jg	sys_fchmod		# branch to system call
361
362ENTRY(sys32_fchown16_wrapper)
363	llgfr	%r2,%r2			# unsigned int
364	llgfr	%r3,%r3			# compat_uid_t
365	llgfr	%r4,%r4			# compat_uid_t
366	jg	sys32_fchown16		# branch to system call
367
368ENTRY(sys32_getpriority_wrapper)
369	lgfr	%r2,%r2			# int
370	lgfr	%r3,%r3			# int
371	jg	sys_getpriority		# branch to system call
372
373ENTRY(sys32_setpriority_wrapper)
374	lgfr	%r2,%r2			# int
375	lgfr	%r3,%r3			# int
376	lgfr	%r4,%r4			# int
377	jg	sys_setpriority		# branch to system call
378
379ENTRY(compat_sys_statfs_wrapper)
380	llgtr	%r2,%r2			# char *
381	llgtr	%r3,%r3			# struct compat_statfs *
382	jg	compat_sys_statfs	# branch to system call
383
384ENTRY(compat_sys_fstatfs_wrapper)
385	llgfr	%r2,%r2			# unsigned int
386	llgtr	%r3,%r3			# struct compat_statfs *
387	jg	compat_sys_fstatfs	# branch to system call
388
389ENTRY(compat_sys_socketcall_wrapper)
390	lgfr	%r2,%r2			# int
391	llgtr	%r3,%r3			# u32 *
392	jg	compat_sys_socketcall	# branch to system call
393
394ENTRY(sys32_syslog_wrapper)
395	lgfr	%r2,%r2			# int
396	llgtr	%r3,%r3			# char *
397	lgfr	%r4,%r4			# int
398	jg	sys_syslog		# branch to system call
399
400ENTRY(compat_sys_setitimer_wrapper)
401	lgfr	%r2,%r2			# int
402	llgtr	%r3,%r3			# struct itimerval_emu31 *
403	llgtr	%r4,%r4			# struct itimerval_emu31 *
404	jg	compat_sys_setitimer	# branch to system call
405
406ENTRY(compat_sys_getitimer_wrapper)
407	lgfr	%r2,%r2			# int
408	llgtr	%r3,%r3			# struct itimerval_emu31 *
409	jg	compat_sys_getitimer	# branch to system call
410
411ENTRY(compat_sys_newstat_wrapper)
412	llgtr	%r2,%r2			# char *
413	llgtr	%r3,%r3			# struct stat_emu31 *
414	jg	compat_sys_newstat	# branch to system call
415
416ENTRY(compat_sys_newlstat_wrapper)
417	llgtr	%r2,%r2			# char *
418	llgtr	%r3,%r3			# struct stat_emu31 *
419	jg	compat_sys_newlstat	# branch to system call
420
421ENTRY(compat_sys_newfstat_wrapper)
422	llgfr	%r2,%r2			# unsigned int
423	llgtr	%r3,%r3			# struct stat_emu31 *
424	jg	compat_sys_newfstat	# branch to system call
425
426#sys32_vhangup_wrapper			# void
427
428ENTRY(compat_sys_wait4_wrapper)
429	lgfr	%r2,%r2			# pid_t
430	llgtr	%r3,%r3			# unsigned int *
431	lgfr	%r4,%r4			# int
432	llgtr	%r5,%r5			# struct rusage *
433	jg	compat_sys_wait4	# branch to system call
434
435ENTRY(sys32_swapoff_wrapper)
436	llgtr	%r2,%r2			# const char *
437	jg	sys_swapoff		# branch to system call
438
439ENTRY(compat_sys_sysinfo_wrapper)
440	llgtr	%r2,%r2			# struct sysinfo_emu31 *
441	jg	compat_sys_sysinfo	# branch to system call
442
443ENTRY(sys32_ipc_wrapper)
444	llgfr	%r2,%r2			# uint
445	lgfr	%r3,%r3			# int
446	lgfr	%r4,%r4			# int
447	lgfr	%r5,%r5			# int
448	llgfr	%r6,%r6			# u32
449	jg	sys32_ipc		# branch to system call
450
451ENTRY(sys32_fsync_wrapper)
452	llgfr	%r2,%r2			# unsigned int
453	jg	sys_fsync		# branch to system call
454
455#sys32_sigreturn_wrapper		# done in sigreturn_glue
456
457#sys32_clone_wrapper			# done in clone_glue
458
459ENTRY(sys32_setdomainname_wrapper)
460	llgtr	%r2,%r2			# char *
461	lgfr	%r3,%r3			# int
462	jg	sys_setdomainname	# branch to system call
463
464ENTRY(sys32_newuname_wrapper)
465	llgtr	%r2,%r2			# struct new_utsname *
466	jg	sys_newuname		# branch to system call
467
468ENTRY(compat_sys_adjtimex_wrapper)
469	llgtr	%r2,%r2			# struct compat_timex *
470	jg	compat_sys_adjtimex	# branch to system call
471
472ENTRY(sys32_mprotect_wrapper)
473	llgtr	%r2,%r2			# unsigned long (actually pointer
474	llgfr	%r3,%r3			# size_t
475	llgfr	%r4,%r4			# unsigned long
476	jg	sys_mprotect		# branch to system call
477
478ENTRY(compat_sys_sigprocmask_wrapper)
479	lgfr	%r2,%r2			# int
480	llgtr	%r3,%r3			# compat_old_sigset_t *
481	llgtr	%r4,%r4			# compat_old_sigset_t *
482	jg	compat_sys_sigprocmask		# branch to system call
483
484ENTRY(sys_init_module_wrapper)
485	llgtr	%r2,%r2			# void *
486	llgfr	%r3,%r3			# unsigned long
487	llgtr	%r4,%r4			# char *
488	jg	sys_init_module		# branch to system call
489
490ENTRY(sys_delete_module_wrapper)
491	llgtr	%r2,%r2			# const char *
492	llgfr	%r3,%r3			# unsigned int
493	jg	sys_delete_module	# branch to system call
494
495ENTRY(sys32_quotactl_wrapper)
496	llgfr	%r2,%r2			# unsigned int
497	llgtr	%r3,%r3			# const char *
498	llgfr	%r4,%r4			# qid_t
499	llgtr	%r5,%r5			# caddr_t
500	jg	sys_quotactl		# branch to system call
501
502ENTRY(sys32_getpgid_wrapper)
503	lgfr	%r2,%r2			# pid_t
504	jg	sys_getpgid		# branch to system call
505
506ENTRY(sys32_fchdir_wrapper)
507	llgfr	%r2,%r2			# unsigned int
508	jg	sys_fchdir		# branch to system call
509
510ENTRY(sys32_bdflush_wrapper)
511	lgfr	%r2,%r2			# int
512	lgfr	%r3,%r3			# long
513	jg	sys_bdflush		# branch to system call
514
515ENTRY(sys32_sysfs_wrapper)
516	lgfr	%r2,%r2			# int
517	llgfr	%r3,%r3			# unsigned long
518	llgfr	%r4,%r4			# unsigned long
519	jg	sys_sysfs		# branch to system call
520
521ENTRY(sys32_personality_wrapper)
522	llgfr	%r2,%r2			# unsigned int
523	jg	sys_s390_personality	# branch to system call
524
525ENTRY(sys32_setfsuid16_wrapper)
526	llgfr	%r2,%r2			# __kernel_old_uid_emu31_t
527	jg	sys32_setfsuid16	# branch to system call
528
529ENTRY(sys32_setfsgid16_wrapper)
530	llgfr	%r2,%r2			# __kernel_old_gid_emu31_t
531	jg	sys32_setfsgid16	# branch to system call
532
533ENTRY(sys32_llseek_wrapper)
534	llgfr	%r2,%r2			# unsigned int
535	llgfr	%r3,%r3			# unsigned long
536	llgfr	%r4,%r4			# unsigned long
537	llgtr	%r5,%r5			# loff_t *
538	llgfr	%r6,%r6			# unsigned int
539	jg	sys_llseek		# branch to system call
540
541ENTRY(sys32_getdents_wrapper)
542	llgfr	%r2,%r2			# unsigned int
543	llgtr	%r3,%r3			# void *
544	llgfr	%r4,%r4			# unsigned int
545	jg	compat_sys_getdents	# branch to system call
546
547ENTRY(compat_sys_select_wrapper)
548	lgfr	%r2,%r2			# int
549	llgtr	%r3,%r3			# compat_fd_set *
550	llgtr	%r4,%r4			# compat_fd_set *
551	llgtr	%r5,%r5			# compat_fd_set *
552	llgtr	%r6,%r6			# struct compat_timeval *
553	jg	compat_sys_select	# branch to system call
554
555ENTRY(sys32_flock_wrapper)
556	llgfr	%r2,%r2			# unsigned int
557	llgfr	%r3,%r3			# unsigned int
558	jg	sys_flock		# branch to system call
559
560ENTRY(sys32_msync_wrapper)
561	llgfr	%r2,%r2			# unsigned long
562	llgfr	%r3,%r3			# size_t
563	lgfr	%r4,%r4			# int
564	jg	sys_msync		# branch to system call
565
566ENTRY(compat_sys_readv_wrapper)
567	lgfr	%r2,%r2			# int
568	llgtr	%r3,%r3			# const struct compat_iovec *
569	llgfr	%r4,%r4			# unsigned long
570	jg	compat_sys_readv	# branch to system call
571
572ENTRY(compat_sys_writev_wrapper)
573	lgfr	%r2,%r2			# int
574	llgtr	%r3,%r3			# const struct compat_iovec *
575	llgfr	%r4,%r4			# unsigned long
576	jg	compat_sys_writev	# branch to system call
577
578ENTRY(sys32_getsid_wrapper)
579	lgfr	%r2,%r2			# pid_t
580	jg	sys_getsid		# branch to system call
581
582ENTRY(sys32_fdatasync_wrapper)
583	llgfr	%r2,%r2			# unsigned int
584	jg	sys_fdatasync		# branch to system call
585
586ENTRY(sys32_mlock_wrapper)
587	llgfr	%r2,%r2			# unsigned long
588	llgfr	%r3,%r3			# size_t
589	jg	sys_mlock		# branch to system call
590
591ENTRY(sys32_munlock_wrapper)
592	llgfr	%r2,%r2			# unsigned long
593	llgfr	%r3,%r3			# size_t
594	jg	sys_munlock		# branch to system call
595
596ENTRY(sys32_mlockall_wrapper)
597	lgfr	%r2,%r2			# int
598	jg	sys_mlockall		# branch to system call
599
600#sys32_munlockall_wrapper		# void
601
602ENTRY(sys32_sched_setparam_wrapper)
603	lgfr	%r2,%r2			# pid_t
604	llgtr	%r3,%r3			# struct sched_param *
605	jg	sys_sched_setparam	# branch to system call
606
607ENTRY(sys32_sched_getparam_wrapper)
608	lgfr	%r2,%r2			# pid_t
609	llgtr	%r3,%r3			# struct sched_param *
610	jg	sys_sched_getparam	# branch to system call
611
612ENTRY(sys32_sched_setscheduler_wrapper)
613	lgfr	%r2,%r2			# pid_t
614	lgfr	%r3,%r3			# int
615	llgtr	%r4,%r4			# struct sched_param *
616	jg	sys_sched_setscheduler	# branch to system call
617
618ENTRY(sys32_sched_getscheduler_wrapper)
619	lgfr	%r2,%r2			# pid_t
620	jg	sys_sched_getscheduler	# branch to system call
621
622#sys32_sched_yield_wrapper		# void
623
624ENTRY(sys32_sched_get_priority_max_wrapper)
625	lgfr	%r2,%r2			# int
626	jg	sys_sched_get_priority_max	# branch to system call
627
628ENTRY(sys32_sched_get_priority_min_wrapper)
629	lgfr	%r2,%r2			# int
630	jg	sys_sched_get_priority_min	# branch to system call
631
632ENTRY(sys32_sched_rr_get_interval_wrapper)
633	lgfr	%r2,%r2			# pid_t
634	llgtr	%r3,%r3			# struct compat_timespec *
635	jg	sys32_sched_rr_get_interval	# branch to system call
636
637ENTRY(compat_sys_nanosleep_wrapper)
638	llgtr	%r2,%r2			# struct compat_timespec *
639	llgtr	%r3,%r3			# struct compat_timespec *
640	jg	compat_sys_nanosleep		# branch to system call
641
642ENTRY(sys32_mremap_wrapper)
643	llgfr	%r2,%r2			# unsigned long
644	llgfr	%r3,%r3			# unsigned long
645	llgfr	%r4,%r4			# unsigned long
646	llgfr	%r5,%r5			# unsigned long
647	llgfr	%r6,%r6			# unsigned long
648	jg	sys_mremap		# branch to system call
649
650ENTRY(sys32_setresuid16_wrapper)
651	llgfr	%r2,%r2			# __kernel_old_uid_emu31_t
652	llgfr	%r3,%r3			# __kernel_old_uid_emu31_t
653	llgfr	%r4,%r4			# __kernel_old_uid_emu31_t
654	jg	sys32_setresuid16	# branch to system call
655
656ENTRY(sys32_getresuid16_wrapper)
657	llgtr	%r2,%r2			# __kernel_old_uid_emu31_t *
658	llgtr	%r3,%r3			# __kernel_old_uid_emu31_t *
659	llgtr	%r4,%r4			# __kernel_old_uid_emu31_t *
660	jg	sys32_getresuid16	# branch to system call
661
662ENTRY(sys32_poll_wrapper)
663	llgtr	%r2,%r2			# struct pollfd *
664	llgfr	%r3,%r3			# unsigned int
665	lgfr	%r4,%r4			# int
666	jg	sys_poll		# branch to system call
667
668ENTRY(sys32_setresgid16_wrapper)
669	llgfr	%r2,%r2			# __kernel_old_gid_emu31_t
670	llgfr	%r3,%r3			# __kernel_old_gid_emu31_t
671	llgfr	%r4,%r4			# __kernel_old_gid_emu31_t
672	jg	sys32_setresgid16	# branch to system call
673
674ENTRY(sys32_getresgid16_wrapper)
675	llgtr	%r2,%r2			# __kernel_old_gid_emu31_t *
676	llgtr	%r3,%r3			# __kernel_old_gid_emu31_t *
677	llgtr	%r4,%r4			# __kernel_old_gid_emu31_t *
678	jg	sys32_getresgid16	# branch to system call
679
680ENTRY(sys32_prctl_wrapper)
681	lgfr	%r2,%r2			# int
682	llgfr	%r3,%r3			# unsigned long
683	llgfr	%r4,%r4			# unsigned long
684	llgfr	%r5,%r5			# unsigned long
685	llgfr	%r6,%r6			# unsigned long
686	jg	sys_prctl		# branch to system call
687
688#sys32_rt_sigreturn_wrapper		# done in rt_sigreturn_glue
689
690ENTRY(sys32_rt_sigaction_wrapper)
691	lgfr	%r2,%r2			# int
692	llgtr	%r3,%r3			# const struct sigaction_emu31 *
693	llgtr	%r4,%r4			# const struct sigaction_emu31 *
694	llgfr	%r5,%r5			# size_t
695	jg	sys32_rt_sigaction	# branch to system call
696
697ENTRY(sys32_rt_sigprocmask_wrapper)
698	lgfr	%r2,%r2			# int
699	llgtr	%r3,%r3			# old_sigset_emu31 *
700	llgtr	%r4,%r4			# old_sigset_emu31 *
701	llgfr	%r5,%r5			# size_t
702	jg	sys32_rt_sigprocmask	# branch to system call
703
704ENTRY(sys32_rt_sigpending_wrapper)
705	llgtr	%r2,%r2			# sigset_emu31 *
706	llgfr	%r3,%r3			# size_t
707	jg	sys32_rt_sigpending	# branch to system call
708
709ENTRY(compat_sys_rt_sigtimedwait_wrapper)
710	llgtr	%r2,%r2			# const sigset_emu31_t *
711	llgtr	%r3,%r3			# siginfo_emu31_t *
712	llgtr	%r4,%r4			# const struct compat_timespec *
713	llgfr	%r5,%r5			# size_t
714	jg	compat_sys_rt_sigtimedwait	# branch to system call
715
716ENTRY(sys32_rt_sigqueueinfo_wrapper)
717	lgfr	%r2,%r2			# int
718	lgfr	%r3,%r3			# int
719	llgtr	%r4,%r4			# siginfo_emu31_t *
720	jg	sys32_rt_sigqueueinfo	# branch to system call
721
722ENTRY(compat_sys_rt_sigsuspend_wrapper)
723	llgtr	%r2,%r2			# compat_sigset_t *
724	llgfr	%r3,%r3			# compat_size_t
725	jg	compat_sys_rt_sigsuspend
726
727ENTRY(sys32_pread64_wrapper)
728	llgfr	%r2,%r2			# unsigned int
729	llgtr	%r3,%r3			# char *
730	llgfr	%r4,%r4			# size_t
731	llgfr	%r5,%r5			# u32
732	llgfr	%r6,%r6			# u32
733	jg	sys32_pread64		# branch to system call
734
735ENTRY(sys32_pwrite64_wrapper)
736	llgfr	%r2,%r2			# unsigned int
737	llgtr	%r3,%r3			# const char *
738	llgfr	%r4,%r4			# size_t
739	llgfr	%r5,%r5			# u32
740	llgfr	%r6,%r6			# u32
741	jg	sys32_pwrite64		# branch to system call
742
743ENTRY(sys32_chown16_wrapper)
744	llgtr	%r2,%r2			# const char *
745	llgfr	%r3,%r3			# __kernel_old_uid_emu31_t
746	llgfr	%r4,%r4			# __kernel_old_gid_emu31_t
747	jg	sys32_chown16		# branch to system call
748
749ENTRY(sys32_getcwd_wrapper)
750	llgtr	%r2,%r2			# char *
751	llgfr	%r3,%r3			# unsigned long
752	jg	sys_getcwd		# branch to system call
753
754ENTRY(sys32_capget_wrapper)
755	llgtr	%r2,%r2			# cap_user_header_t
756	llgtr	%r3,%r3			# cap_user_data_t
757	jg	sys_capget		# branch to system call
758
759ENTRY(sys32_capset_wrapper)
760	llgtr	%r2,%r2			# cap_user_header_t
761	llgtr	%r3,%r3			# const cap_user_data_t
762	jg	sys_capset		# branch to system call
763
764ENTRY(sys32_sigaltstack_wrapper)
765	llgtr	%r2,%r2			# const stack_emu31_t *
766	llgtr	%r3,%r3			# stack_emu31_t *
767	jg	sys32_sigaltstack
768
769ENTRY(sys32_sendfile_wrapper)
770	lgfr	%r2,%r2			# int
771	lgfr	%r3,%r3			# int
772	llgtr	%r4,%r4			# __kernel_off_emu31_t *
773	llgfr	%r5,%r5			# size_t
774	jg	sys32_sendfile		# branch to system call
775
776#sys32_vfork_wrapper			# done in vfork_glue
777
778ENTRY(sys32_truncate64_wrapper)
779	llgtr	%r2,%r2			# const char *
780	llgfr	%r3,%r3			# unsigned long
781	llgfr	%r4,%r4			# unsigned long
782	jg	sys32_truncate64	# branch to system call
783
784ENTRY(sys32_ftruncate64_wrapper)
785	llgfr	%r2,%r2			# unsigned int
786	llgfr	%r3,%r3			# unsigned long
787	llgfr	%r4,%r4			# unsigned long
788	jg	sys32_ftruncate64	# branch to system call
789
790ENTRY(sys32_lchown_wrapper)
791	llgtr	%r2,%r2			# const char *
792	llgfr	%r3,%r3			# uid_t
793	llgfr	%r4,%r4			# gid_t
794	jg	sys_lchown		# branch to system call
795
796#sys32_getuid_wrapper			# void
797#sys32_getgid_wrapper			# void
798#sys32_geteuid_wrapper			# void
799#sys32_getegid_wrapper			# void
800
801ENTRY(sys32_setreuid_wrapper)
802	llgfr	%r2,%r2			# uid_t
803	llgfr	%r3,%r3			# uid_t
804	jg	sys_setreuid		# branch to system call
805
806ENTRY(sys32_setregid_wrapper)
807	llgfr	%r2,%r2			# gid_t
808	llgfr	%r3,%r3			# gid_t
809	jg	sys_setregid		# branch to system call
810
811ENTRY(sys32_getgroups_wrapper)
812	lgfr	%r2,%r2			# int
813	llgtr	%r3,%r3			# gid_t *
814	jg	sys_getgroups		# branch to system call
815
816ENTRY(sys32_setgroups_wrapper)
817	lgfr	%r2,%r2			# int
818	llgtr	%r3,%r3			# gid_t *
819	jg	sys_setgroups		# branch to system call
820
821ENTRY(sys32_fchown_wrapper)
822	llgfr	%r2,%r2			# unsigned int
823	llgfr	%r3,%r3			# uid_t
824	llgfr	%r4,%r4			# gid_t
825	jg	sys_fchown		# branch to system call
826
827ENTRY(sys32_setresuid_wrapper)
828	llgfr	%r2,%r2			# uid_t
829	llgfr	%r3,%r3			# uid_t
830	llgfr	%r4,%r4			# uid_t
831	jg	sys_setresuid		# branch to system call
832
833ENTRY(sys32_getresuid_wrapper)
834	llgtr	%r2,%r2			# uid_t *
835	llgtr	%r3,%r3			# uid_t *
836	llgtr	%r4,%r4			# uid_t *
837	jg	sys_getresuid		# branch to system call
838
839ENTRY(sys32_setresgid_wrapper)
840	llgfr	%r2,%r2			# gid_t
841	llgfr	%r3,%r3			# gid_t
842	llgfr	%r4,%r4			# gid_t
843	jg	sys_setresgid		# branch to system call
844
845ENTRY(sys32_getresgid_wrapper)
846	llgtr	%r2,%r2			# gid_t *
847	llgtr	%r3,%r3			# gid_t *
848	llgtr	%r4,%r4			# gid_t *
849	jg	sys_getresgid		# branch to system call
850
851ENTRY(sys32_chown_wrapper)
852	llgtr	%r2,%r2			# const char *
853	llgfr	%r3,%r3			# uid_t
854	llgfr	%r4,%r4			# gid_t
855	jg	sys_chown		# branch to system call
856
857ENTRY(sys32_setuid_wrapper)
858	llgfr	%r2,%r2			# uid_t
859	jg	sys_setuid		# branch to system call
860
861ENTRY(sys32_setgid_wrapper)
862	llgfr	%r2,%r2			# gid_t
863	jg	sys_setgid		# branch to system call
864
865ENTRY(sys32_setfsuid_wrapper)
866	llgfr	%r2,%r2			# uid_t
867	jg	sys_setfsuid		# branch to system call
868
869ENTRY(sys32_setfsgid_wrapper)
870	llgfr	%r2,%r2			# gid_t
871	jg	sys_setfsgid		# branch to system call
872
873ENTRY(sys32_pivot_root_wrapper)
874	llgtr	%r2,%r2			# const char *
875	llgtr	%r3,%r3			# const char *
876	jg	sys_pivot_root		# branch to system call
877
878ENTRY(sys32_mincore_wrapper)
879	llgfr	%r2,%r2			# unsigned long
880	llgfr	%r3,%r3			# size_t
881	llgtr	%r4,%r4			# unsigned char *
882	jg	sys_mincore		# branch to system call
883
884ENTRY(sys32_madvise_wrapper)
885	llgfr	%r2,%r2			# unsigned long
886	llgfr	%r3,%r3			# size_t
887	lgfr	%r4,%r4			# int
888	jg	sys_madvise		# branch to system call
889
890ENTRY(sys32_getdents64_wrapper)
891	llgfr	%r2,%r2			# unsigned int
892	llgtr	%r3,%r3			# void *
893	llgfr	%r4,%r4			# unsigned int
894	jg	sys_getdents64		# branch to system call
895
896ENTRY(compat_sys_fcntl64_wrapper)
897	llgfr	%r2,%r2			# unsigned int
898	llgfr	%r3,%r3			# unsigned int
899	llgfr	%r4,%r4			# unsigned long
900	jg	compat_sys_fcntl64	# branch to system call
901
902ENTRY(sys32_stat64_wrapper)
903	llgtr	%r2,%r2			# char *
904	llgtr	%r3,%r3			# struct stat64 *
905	jg	sys32_stat64		# branch to system call
906
907ENTRY(sys32_lstat64_wrapper)
908	llgtr	%r2,%r2			# char *
909	llgtr	%r3,%r3			# struct stat64 *
910	jg	sys32_lstat64		# branch to system call
911
912ENTRY(sys32_stime_wrapper)
913	llgtr	%r2,%r2			# long *
914	jg	compat_sys_stime	# branch to system call
915
916ENTRY(sys32_sysctl_wrapper)
917	llgtr	%r2,%r2 		# struct compat_sysctl_args *
918	jg	compat_sys_sysctl
919
920ENTRY(sys32_fstat64_wrapper)
921	llgfr	%r2,%r2			# unsigned long
922	llgtr	%r3,%r3			# struct stat64 *
923	jg	sys32_fstat64		# branch to system call
924
925ENTRY(compat_sys_futex_wrapper)
926	llgtr	%r2,%r2			# u32 *
927	lgfr	%r3,%r3			# int
928	lgfr	%r4,%r4			# int
929	llgtr	%r5,%r5			# struct compat_timespec *
930	llgtr	%r6,%r6			# u32 *
931	lgf	%r0,164(%r15)		# int
932	stg	%r0,160(%r15)
933	jg	compat_sys_futex	# branch to system call
934
935ENTRY(sys32_setxattr_wrapper)
936	llgtr	%r2,%r2			# char *
937	llgtr	%r3,%r3			# char *
938	llgtr	%r4,%r4			# void *
939	llgfr	%r5,%r5			# size_t
940	lgfr	%r6,%r6			# int
941	jg	sys_setxattr
942
943ENTRY(sys32_lsetxattr_wrapper)
944	llgtr	%r2,%r2			# char *
945	llgtr	%r3,%r3			# char *
946	llgtr	%r4,%r4			# void *
947	llgfr	%r5,%r5			# size_t
948	lgfr	%r6,%r6			# int
949	jg	sys_lsetxattr
950
951ENTRY(sys32_fsetxattr_wrapper)
952	lgfr	%r2,%r2			# int
953	llgtr	%r3,%r3			# char *
954	llgtr	%r4,%r4			# void *
955	llgfr	%r5,%r5			# size_t
956	lgfr	%r6,%r6			# int
957	jg	sys_fsetxattr
958
959ENTRY(sys32_getxattr_wrapper)
960	llgtr	%r2,%r2			# char *
961	llgtr	%r3,%r3			# char *
962	llgtr	%r4,%r4			# void *
963	llgfr	%r5,%r5			# size_t
964	jg	sys_getxattr
965
966ENTRY(sys32_lgetxattr_wrapper)
967	llgtr	%r2,%r2			# char *
968	llgtr	%r3,%r3			# char *
969	llgtr	%r4,%r4			# void *
970	llgfr	%r5,%r5			# size_t
971	jg	sys_lgetxattr
972
973ENTRY(sys32_fgetxattr_wrapper)
974	lgfr	%r2,%r2			# int
975	llgtr	%r3,%r3			# char *
976	llgtr	%r4,%r4			# void *
977	llgfr	%r5,%r5			# size_t
978	jg	sys_fgetxattr
979
980ENTRY(sys32_listxattr_wrapper)
981	llgtr	%r2,%r2			# char *
982	llgtr	%r3,%r3			# char *
983	llgfr	%r4,%r4			# size_t
984	jg	sys_listxattr
985
986ENTRY(sys32_llistxattr_wrapper)
987	llgtr	%r2,%r2			# char *
988	llgtr	%r3,%r3			# char *
989	llgfr	%r4,%r4			# size_t
990	jg	sys_llistxattr
991
992ENTRY(sys32_flistxattr_wrapper)
993	lgfr	%r2,%r2			# int
994	llgtr	%r3,%r3			# char *
995	llgfr	%r4,%r4			# size_t
996	jg	sys_flistxattr
997
998ENTRY(sys32_removexattr_wrapper)
999	llgtr	%r2,%r2			# char *
1000	llgtr	%r3,%r3			# char *
1001	jg	sys_removexattr
1002
1003ENTRY(sys32_lremovexattr_wrapper)
1004	llgtr	%r2,%r2			# char *
1005	llgtr	%r3,%r3			# char *
1006	jg	sys_lremovexattr
1007
1008ENTRY(sys32_fremovexattr_wrapper)
1009	lgfr	%r2,%r2			# int
1010	llgtr	%r3,%r3			# char *
1011	jg	sys_fremovexattr
1012
1013ENTRY(sys32_sched_setaffinity_wrapper)
1014	lgfr	%r2,%r2			# int
1015	llgfr	%r3,%r3			# unsigned int
1016	llgtr	%r4,%r4			# unsigned long *
1017	jg	compat_sys_sched_setaffinity
1018
1019ENTRY(sys32_sched_getaffinity_wrapper)
1020	lgfr	%r2,%r2			# int
1021	llgfr	%r3,%r3			# unsigned int
1022	llgtr	%r4,%r4			# unsigned long *
1023	jg	compat_sys_sched_getaffinity
1024
1025ENTRY(sys32_exit_group_wrapper)
1026	lgfr	%r2,%r2			# int
1027	jg	sys_exit_group		# branch to system call
1028
1029ENTRY(sys32_set_tid_address_wrapper)
1030	llgtr	%r2,%r2			# int *
1031	jg	sys_set_tid_address	# branch to system call
1032
1033ENTRY(sys_epoll_create_wrapper)
1034	lgfr	%r2,%r2			# int
1035	jg	sys_epoll_create	# branch to system call
1036
1037ENTRY(sys_epoll_ctl_wrapper)
1038	lgfr	%r2,%r2			# int
1039	lgfr	%r3,%r3			# int
1040	lgfr	%r4,%r4			# int
1041	llgtr	%r5,%r5			# struct epoll_event *
1042	jg	sys_epoll_ctl		# branch to system call
1043
1044ENTRY(sys_epoll_wait_wrapper)
1045	lgfr	%r2,%r2			# int
1046	llgtr	%r3,%r3			# struct epoll_event *
1047	lgfr	%r4,%r4			# int
1048	lgfr	%r5,%r5			# int
1049	jg	sys_epoll_wait		# branch to system call
1050
1051ENTRY(sys32_lookup_dcookie_wrapper)
1052	sllg	%r2,%r2,32		# get high word of 64bit dcookie
1053	or	%r2,%r3			# get low word of 64bit dcookie
1054	llgtr	%r3,%r4			# char *
1055	llgfr	%r4,%r5			# size_t
1056	jg	sys_lookup_dcookie
1057
1058ENTRY(sys32_fadvise64_wrapper)
1059	lgfr	%r2,%r2			# int
1060	sllg	%r3,%r3,32		# get high word of 64bit loff_t
1061	or	%r3,%r4			# get low word of 64bit loff_t
1062	llgfr	%r4,%r5			# size_t (unsigned long)
1063	lgfr	%r5,%r6			# int
1064	jg	sys32_fadvise64
1065
1066ENTRY(sys32_fadvise64_64_wrapper)
1067	llgtr	%r2,%r2			# struct fadvise64_64_args *
1068	jg	sys32_fadvise64_64
1069
1070ENTRY(sys32_clock_settime_wrapper)
1071	lgfr	%r2,%r2			# clockid_t (int)
1072	llgtr	%r3,%r3			# struct compat_timespec *
1073	jg	compat_sys_clock_settime
1074
1075ENTRY(sys32_clock_gettime_wrapper)
1076	lgfr	%r2,%r2			# clockid_t (int)
1077	llgtr	%r3,%r3			# struct compat_timespec *
1078	jg	compat_sys_clock_gettime
1079
1080ENTRY(sys32_clock_getres_wrapper)
1081	lgfr	%r2,%r2			# clockid_t (int)
1082	llgtr	%r3,%r3			# struct compat_timespec *
1083	jg	compat_sys_clock_getres
1084
1085ENTRY(sys32_clock_nanosleep_wrapper)
1086	lgfr	%r2,%r2			# clockid_t (int)
1087	lgfr	%r3,%r3			# int
1088	llgtr	%r4,%r4			# struct compat_timespec *
1089	llgtr	%r5,%r5			# struct compat_timespec *
1090	jg	compat_sys_clock_nanosleep
1091
1092ENTRY(sys32_timer_create_wrapper)
1093	lgfr	%r2,%r2			# timer_t (int)
1094	llgtr	%r3,%r3			# struct compat_sigevent *
1095	llgtr	%r4,%r4			# timer_t *
1096	jg	compat_sys_timer_create
1097
1098ENTRY(sys32_timer_settime_wrapper)
1099	lgfr	%r2,%r2			# timer_t (int)
1100	lgfr	%r3,%r3			# int
1101	llgtr	%r4,%r4			# struct compat_itimerspec *
1102	llgtr	%r5,%r5			# struct compat_itimerspec *
1103	jg	compat_sys_timer_settime
1104
1105ENTRY(sys32_timer_gettime_wrapper)
1106	lgfr	%r2,%r2			# timer_t (int)
1107	llgtr	%r3,%r3			# struct compat_itimerspec *
1108	jg	compat_sys_timer_gettime
1109
1110ENTRY(sys32_timer_getoverrun_wrapper)
1111	lgfr	%r2,%r2			# timer_t (int)
1112	jg	sys_timer_getoverrun
1113
1114ENTRY(sys32_timer_delete_wrapper)
1115	lgfr	%r2,%r2			# timer_t (int)
1116	jg	sys_timer_delete
1117
1118ENTRY(sys32_io_setup_wrapper)
1119	llgfr	%r2,%r2			# unsigned int
1120	llgtr	%r3,%r3			# u32 *
1121	jg	compat_sys_io_setup
1122
1123ENTRY(sys32_io_destroy_wrapper)
1124	llgfr	%r2,%r2			# (aio_context_t) u32
1125	jg	sys_io_destroy
1126
1127ENTRY(sys32_io_getevents_wrapper)
1128	llgfr	%r2,%r2			# (aio_context_t) u32
1129	lgfr	%r3,%r3			# long
1130	lgfr	%r4,%r4			# long
1131	llgtr	%r5,%r5			# struct io_event *
1132	llgtr	%r6,%r6			# struct compat_timespec *
1133	jg	compat_sys_io_getevents
1134
1135ENTRY(sys32_io_submit_wrapper)
1136	llgfr	%r2,%r2			# (aio_context_t) u32
1137	lgfr	%r3,%r3			# long
1138	llgtr	%r4,%r4			# struct iocb **
1139	jg	compat_sys_io_submit
1140
1141ENTRY(sys32_io_cancel_wrapper)
1142	llgfr	%r2,%r2			# (aio_context_t) u32
1143	llgtr	%r3,%r3			# struct iocb *
1144	llgtr	%r4,%r4			# struct io_event *
1145	jg	sys_io_cancel
1146
1147ENTRY(compat_sys_statfs64_wrapper)
1148	llgtr	%r2,%r2			# const char *
1149	llgfr	%r3,%r3			# compat_size_t
1150	llgtr	%r4,%r4			# struct compat_statfs64 *
1151	jg	compat_sys_statfs64
1152
1153ENTRY(compat_sys_fstatfs64_wrapper)
1154	llgfr	%r2,%r2			# unsigned int fd
1155	llgfr	%r3,%r3			# compat_size_t
1156	llgtr	%r4,%r4			# struct compat_statfs64 *
1157	jg	compat_sys_fstatfs64
1158
1159ENTRY(compat_sys_mq_open_wrapper)
1160	llgtr	%r2,%r2			# const char *
1161	lgfr	%r3,%r3			# int
1162	llgfr	%r4,%r4			# mode_t
1163	llgtr	%r5,%r5			# struct compat_mq_attr *
1164	jg	compat_sys_mq_open
1165
1166ENTRY(sys32_mq_unlink_wrapper)
1167	llgtr	%r2,%r2			# const char *
1168	jg	sys_mq_unlink
1169
1170ENTRY(compat_sys_mq_timedsend_wrapper)
1171	lgfr	%r2,%r2			# mqd_t
1172	llgtr	%r3,%r3			# const char *
1173	llgfr	%r4,%r4			# size_t
1174	llgfr	%r5,%r5			# unsigned int
1175	llgtr	%r6,%r6			# const struct compat_timespec *
1176	jg	compat_sys_mq_timedsend
1177
1178ENTRY(compat_sys_mq_timedreceive_wrapper)
1179	lgfr	%r2,%r2			# mqd_t
1180	llgtr	%r3,%r3			# char *
1181	llgfr	%r4,%r4			# size_t
1182	llgtr	%r5,%r5			# unsigned int *
1183	llgtr	%r6,%r6			# const struct compat_timespec *
1184	jg	compat_sys_mq_timedreceive
1185
1186ENTRY(compat_sys_mq_notify_wrapper)
1187	lgfr	%r2,%r2			# mqd_t
1188	llgtr	%r3,%r3			# struct compat_sigevent *
1189	jg	compat_sys_mq_notify
1190
1191ENTRY(compat_sys_mq_getsetattr_wrapper)
1192	lgfr	%r2,%r2			# mqd_t
1193	llgtr	%r3,%r3			# struct compat_mq_attr *
1194	llgtr	%r4,%r4			# struct compat_mq_attr *
1195	jg	compat_sys_mq_getsetattr
1196
1197ENTRY(compat_sys_add_key_wrapper)
1198	llgtr	%r2,%r2			# const char *
1199	llgtr	%r3,%r3			# const char *
1200	llgtr	%r4,%r4			# const void *
1201	llgfr	%r5,%r5			# size_t
1202	llgfr	%r6,%r6			# (key_serial_t) u32
1203	jg	sys_add_key
1204
1205ENTRY(compat_sys_request_key_wrapper)
1206	llgtr	%r2,%r2			# const char *
1207	llgtr	%r3,%r3			# const char *
1208	llgtr	%r4,%r4			# const void *
1209	llgfr	%r5,%r5			# (key_serial_t) u32
1210	jg	sys_request_key
1211
1212ENTRY(sys32_remap_file_pages_wrapper)
1213	llgfr	%r2,%r2			# unsigned long
1214	llgfr	%r3,%r3			# unsigned long
1215	llgfr	%r4,%r4			# unsigned long
1216	llgfr	%r5,%r5			# unsigned long
1217	llgfr	%r6,%r6			# unsigned long
1218	jg	sys_remap_file_pages
1219
1220ENTRY(compat_sys_waitid_wrapper)
1221	lgfr	%r2,%r2			# int
1222	lgfr	%r3,%r3			# pid_t
1223	llgtr	%r4,%r4			# siginfo_emu31_t *
1224	lgfr	%r5,%r5			# int
1225	llgtr	%r6,%r6			# struct rusage_emu31 *
1226	jg	compat_sys_waitid
1227
1228ENTRY(compat_sys_kexec_load_wrapper)
1229	llgfr	%r2,%r2			# unsigned long
1230	llgfr	%r3,%r3			# unsigned long
1231	llgtr	%r4,%r4			# struct kexec_segment *
1232	llgfr	%r5,%r5			# unsigned long
1233	jg	compat_sys_kexec_load
1234
1235ENTRY(sys_ioprio_set_wrapper)
1236	lgfr	%r2,%r2			# int
1237	lgfr	%r3,%r3			# int
1238	lgfr	%r4,%r4			# int
1239	jg	sys_ioprio_set
1240
1241ENTRY(sys_ioprio_get_wrapper)
1242	lgfr	%r2,%r2			# int
1243	lgfr	%r3,%r3			# int
1244	jg	sys_ioprio_get
1245
1246ENTRY(sys_inotify_add_watch_wrapper)
1247	lgfr	%r2,%r2			# int
1248	llgtr	%r3,%r3			# const char *
1249	llgfr	%r4,%r4			# u32
1250	jg	sys_inotify_add_watch
1251
1252ENTRY(sys_inotify_rm_watch_wrapper)
1253	lgfr	%r2,%r2			# int
1254	llgfr	%r3,%r3			# u32
1255	jg	sys_inotify_rm_watch
1256
1257ENTRY(compat_sys_openat_wrapper)
1258	llgfr	%r2,%r2			# unsigned int
1259	llgtr	%r3,%r3			# const char *
1260	lgfr	%r4,%r4			# int
1261	lgfr	%r5,%r5			# int
1262	jg	compat_sys_openat
1263
1264ENTRY(sys_mkdirat_wrapper)
1265	lgfr	%r2,%r2			# int
1266	llgtr	%r3,%r3			# const char *
1267	lgfr	%r4,%r4			# int
1268	jg	sys_mkdirat
1269
1270ENTRY(sys_mknodat_wrapper)
1271	lgfr	%r2,%r2			# int
1272	llgtr	%r3,%r3			# const char *
1273	lgfr	%r4,%r4			# int
1274	llgfr	%r5,%r5			# unsigned int
1275	jg	sys_mknodat
1276
1277ENTRY(sys_fchownat_wrapper)
1278	lgfr	%r2,%r2			# int
1279	llgtr	%r3,%r3			# const char *
1280	llgfr	%r4,%r4			# uid_t
1281	llgfr	%r5,%r5			# gid_t
1282	lgfr	%r6,%r6			# int
1283	jg	sys_fchownat
1284
1285ENTRY(compat_sys_futimesat_wrapper)
1286	llgfr	%r2,%r2			# unsigned int
1287	llgtr	%r3,%r3			# char *
1288	llgtr	%r4,%r4			# struct timeval *
1289	jg	compat_sys_futimesat
1290
1291ENTRY(sys32_fstatat64_wrapper)
1292	llgfr	%r2,%r2			# unsigned int
1293	llgtr	%r3,%r3			# char *
1294	llgtr	%r4,%r4			# struct stat64 *
1295	lgfr	%r5,%r5			# int
1296	jg	sys32_fstatat64
1297
1298ENTRY(sys_unlinkat_wrapper)
1299	lgfr	%r2,%r2			# int
1300	llgtr	%r3,%r3			# const char *
1301	lgfr	%r4,%r4			# int
1302	jg	sys_unlinkat
1303
1304ENTRY(sys_renameat_wrapper)
1305	lgfr	%r2,%r2			# int
1306	llgtr	%r3,%r3			# const char *
1307	lgfr	%r4,%r4			# int
1308	llgtr	%r5,%r5			# const char *
1309	jg	sys_renameat
1310
1311ENTRY(sys_linkat_wrapper)
1312	lgfr	%r2,%r2			# int
1313	llgtr	%r3,%r3			# const char *
1314	lgfr	%r4,%r4			# int
1315	llgtr	%r5,%r5			# const char *
1316	lgfr	%r6,%r6			# int
1317	jg	sys_linkat
1318
1319ENTRY(sys_symlinkat_wrapper)
1320	llgtr	%r2,%r2			# const char *
1321	lgfr	%r3,%r3			# int
1322	llgtr	%r4,%r4			# const char *
1323	jg	sys_symlinkat
1324
1325ENTRY(sys_readlinkat_wrapper)
1326	lgfr	%r2,%r2			# int
1327	llgtr	%r3,%r3			# const char *
1328	llgtr	%r4,%r4			# char *
1329	lgfr	%r5,%r5			# int
1330	jg	sys_readlinkat
1331
1332ENTRY(sys_fchmodat_wrapper)
1333	lgfr	%r2,%r2			# int
1334	llgtr	%r3,%r3			# const char *
1335	llgfr	%r4,%r4			# mode_t
1336	jg	sys_fchmodat
1337
1338ENTRY(sys_faccessat_wrapper)
1339	lgfr	%r2,%r2			# int
1340	llgtr	%r3,%r3			# const char *
1341	lgfr	%r4,%r4			# int
1342	jg	sys_faccessat
1343
1344ENTRY(compat_sys_pselect6_wrapper)
1345	lgfr	%r2,%r2			# int
1346	llgtr	%r3,%r3			# fd_set *
1347	llgtr	%r4,%r4			# fd_set *
1348	llgtr	%r5,%r5			# fd_set *
1349	llgtr	%r6,%r6			# struct timespec *
1350	llgt	%r0,164(%r15)		# void *
1351	stg	%r0,160(%r15)
1352	jg	compat_sys_pselect6
1353
1354ENTRY(compat_sys_ppoll_wrapper)
1355	llgtr	%r2,%r2			# struct pollfd *
1356	llgfr	%r3,%r3			# unsigned int
1357	llgtr	%r4,%r4			# struct timespec *
1358	llgtr	%r5,%r5			# const sigset_t *
1359	llgfr	%r6,%r6			# size_t
1360	jg	compat_sys_ppoll
1361
1362ENTRY(sys_unshare_wrapper)
1363	llgfr	%r2,%r2			# unsigned long
1364	jg	sys_unshare
1365
1366ENTRY(compat_sys_set_robust_list_wrapper)
1367	llgtr	%r2,%r2			# struct compat_robust_list_head *
1368	llgfr	%r3,%r3			# size_t
1369	jg	compat_sys_set_robust_list
1370
1371ENTRY(compat_sys_get_robust_list_wrapper)
1372	lgfr	%r2,%r2			# int
1373	llgtr	%r3,%r3			# compat_uptr_t_t *
1374	llgtr	%r4,%r4			# compat_size_t *
1375	jg	compat_sys_get_robust_list
1376
1377ENTRY(sys_splice_wrapper)
1378	lgfr	%r2,%r2			# int
1379	llgtr	%r3,%r3			# loff_t *
1380	lgfr	%r4,%r4			# int
1381	llgtr	%r5,%r5			# loff_t *
1382	llgfr	%r6,%r6			# size_t
1383	llgf	%r0,164(%r15)		# unsigned int
1384	stg	%r0,160(%r15)
1385	jg	sys_splice
1386
1387ENTRY(sys_sync_file_range_wrapper)
1388	lgfr	%r2,%r2			# int
1389	sllg	%r3,%r3,32		# get high word of 64bit loff_t
1390	or	%r3,%r4			# get low word of 64bit loff_t
1391	sllg	%r4,%r5,32		# get high word of 64bit loff_t
1392	or	%r4,%r6			# get low word of 64bit loff_t
1393	llgf	%r5,164(%r15)		# unsigned int
1394	jg	sys_sync_file_range
1395
1396ENTRY(sys_tee_wrapper)
1397	lgfr	%r2,%r2			# int
1398	lgfr	%r3,%r3			# int
1399	llgfr	%r4,%r4			# size_t
1400	llgfr	%r5,%r5			# unsigned int
1401	jg	sys_tee
1402
1403ENTRY(compat_sys_vmsplice_wrapper)
1404	lgfr	%r2,%r2			# int
1405	llgtr	%r3,%r3			# compat_iovec *
1406	llgfr	%r4,%r4			# unsigned int
1407	llgfr	%r5,%r5			# unsigned int
1408	jg	compat_sys_vmsplice
1409
1410ENTRY(sys_getcpu_wrapper)
1411	llgtr	%r2,%r2			# unsigned *
1412	llgtr	%r3,%r3			# unsigned *
1413	llgtr	%r4,%r4			# struct getcpu_cache *
1414	jg	sys_getcpu
1415
1416ENTRY(compat_sys_epoll_pwait_wrapper)
1417	lgfr	%r2,%r2			# int
1418	llgtr	%r3,%r3			# struct compat_epoll_event *
1419	lgfr	%r4,%r4			# int
1420	lgfr	%r5,%r5			# int
1421	llgtr	%r6,%r6			# compat_sigset_t *
1422	llgf	%r0,164(%r15)		# compat_size_t
1423	stg	%r0,160(%r15)
1424	jg	compat_sys_epoll_pwait
1425
1426ENTRY(compat_sys_utimes_wrapper)
1427	llgtr	%r2,%r2			# char *
1428	llgtr	%r3,%r3			# struct compat_timeval *
1429	jg	compat_sys_utimes
1430
1431ENTRY(compat_sys_utimensat_wrapper)
1432	llgfr	%r2,%r2			# unsigned int
1433	llgtr	%r3,%r3			# char *
1434	llgtr	%r4,%r4			# struct compat_timespec *
1435	lgfr	%r5,%r5			# int
1436	jg	compat_sys_utimensat
1437
1438ENTRY(compat_sys_signalfd_wrapper)
1439	lgfr	%r2,%r2			# int
1440	llgtr	%r3,%r3			# compat_sigset_t *
1441	llgfr	%r4,%r4			# compat_size_t
1442	jg	compat_sys_signalfd
1443
1444ENTRY(sys_eventfd_wrapper)
1445	llgfr	%r2,%r2			# unsigned int
1446	jg	sys_eventfd
1447
1448ENTRY(sys_fallocate_wrapper)
1449	lgfr	%r2,%r2			# int
1450	lgfr	%r3,%r3			# int
1451	sllg	%r4,%r4,32		# get high word of 64bit loff_t
1452	lr	%r4,%r5			# get low word of 64bit loff_t
1453	sllg	%r5,%r6,32		# get high word of 64bit loff_t
1454	l	%r5,164(%r15)		# get low word of 64bit loff_t
1455	jg	sys_fallocate
1456
1457ENTRY(sys_timerfd_create_wrapper)
1458	lgfr	%r2,%r2			# int
1459	lgfr	%r3,%r3			# int
1460	jg	sys_timerfd_create
1461
1462ENTRY(compat_sys_timerfd_settime_wrapper)
1463	lgfr	%r2,%r2			# int
1464	lgfr	%r3,%r3			# int
1465	llgtr	%r4,%r4			# struct compat_itimerspec *
1466	llgtr	%r5,%r5			# struct compat_itimerspec *
1467	jg	compat_sys_timerfd_settime
1468
1469ENTRY(compat_sys_timerfd_gettime_wrapper)
1470	lgfr	%r2,%r2			# int
1471	llgtr	%r3,%r3			# struct compat_itimerspec *
1472	jg	compat_sys_timerfd_gettime
1473
1474ENTRY(compat_sys_signalfd4_wrapper)
1475	lgfr	%r2,%r2			# int
1476	llgtr	%r3,%r3			# compat_sigset_t *
1477	llgfr	%r4,%r4			# compat_size_t
1478	lgfr	%r5,%r5			# int
1479	jg	compat_sys_signalfd4
1480
1481ENTRY(sys_eventfd2_wrapper)
1482	llgfr	%r2,%r2			# unsigned int
1483	lgfr	%r3,%r3			# int
1484	jg	sys_eventfd2
1485
1486ENTRY(sys_inotify_init1_wrapper)
1487	lgfr	%r2,%r2			# int
1488	jg	sys_inotify_init1
1489
1490ENTRY(sys_pipe2_wrapper)
1491	llgtr	%r2,%r2			# u32 *
1492	lgfr	%r3,%r3			# int
1493	jg	sys_pipe2		# branch to system call
1494
1495ENTRY(sys_dup3_wrapper)
1496	llgfr	%r2,%r2			# unsigned int
1497	llgfr	%r3,%r3			# unsigned int
1498	lgfr	%r4,%r4			# int
1499	jg	sys_dup3		# branch to system call
1500
1501ENTRY(sys_epoll_create1_wrapper)
1502	lgfr	%r2,%r2			# int
1503	jg	sys_epoll_create1	# branch to system call
1504
1505ENTRY(sys32_readahead_wrapper)
1506	lgfr	%r2,%r2			# int
1507	llgfr	%r3,%r3			# u32
1508	llgfr	%r4,%r4			# u32
1509	lgfr	%r5,%r5			# s32
1510	jg	sys32_readahead		# branch to system call
1511
1512ENTRY(sys32_sendfile64_wrapper)
1513	lgfr	%r2,%r2			# int
1514	lgfr	%r3,%r3			# int
1515	llgtr	%r4,%r4			# compat_loff_t *
1516	lgfr	%r5,%r5			# s32
1517	jg	sys32_sendfile64	# branch to system call
1518
1519ENTRY(sys_tkill_wrapper)
1520	lgfr	%r2,%r2			# pid_t
1521	lgfr	%r3,%r3			# int
1522	jg	sys_tkill		# branch to system call
1523
1524ENTRY(sys_tgkill_wrapper)
1525	lgfr	%r2,%r2			# pid_t
1526	lgfr	%r3,%r3			# pid_t
1527	lgfr	%r4,%r4			# int
1528	jg	sys_tgkill		# branch to system call
1529
1530ENTRY(compat_sys_keyctl_wrapper)
1531	llgfr	%r2,%r2			# u32
1532	llgfr	%r3,%r3			# u32
1533	llgfr	%r4,%r4			# u32
1534	llgfr	%r5,%r5			# u32
1535	llgfr	%r6,%r6			# u32
1536	jg	compat_sys_keyctl	# branch to system call
1537
1538ENTRY(compat_sys_preadv_wrapper)
1539	llgfr	%r2,%r2			# unsigned long
1540	llgtr	%r3,%r3			# compat_iovec *
1541	llgfr	%r4,%r4			# unsigned long
1542	llgfr	%r5,%r5			# u32
1543	llgfr	%r6,%r6			# u32
1544	jg	compat_sys_preadv	# branch to system call
1545
1546ENTRY(compat_sys_pwritev_wrapper)
1547	llgfr	%r2,%r2			# unsigned long
1548	llgtr	%r3,%r3			# compat_iovec *
1549	llgfr	%r4,%r4			# unsigned long
1550	llgfr	%r5,%r5			# u32
1551	llgfr	%r6,%r6			# u32
1552	jg	compat_sys_pwritev	# branch to system call
1553
1554ENTRY(compat_sys_rt_tgsigqueueinfo_wrapper)
1555	lgfr	%r2,%r2			# compat_pid_t
1556	lgfr	%r3,%r3			# compat_pid_t
1557	lgfr	%r4,%r4			# int
1558	llgtr	%r5,%r5			# struct compat_siginfo *
1559	jg	compat_sys_rt_tgsigqueueinfo_wrapper # branch to system call
1560
1561ENTRY(sys_perf_event_open_wrapper)
1562	llgtr	%r2,%r2			# const struct perf_event_attr *
1563	lgfr	%r3,%r3			# pid_t
1564	lgfr	%r4,%r4			# int
1565	lgfr	%r5,%r5			# int
1566	llgfr	%r6,%r6			# unsigned long
1567	jg	sys_perf_event_open	# branch to system call
1568
1569ENTRY(sys_clone_wrapper)
1570	llgfr	%r2,%r2			# unsigned long
1571	llgfr	%r3,%r3			# unsigned long
1572	llgtr	%r4,%r4			# int *
1573	llgtr	%r5,%r5			# int *
1574	jg	sys_clone		# branch to system call
1575
1576ENTRY(sys32_execve_wrapper)
1577	llgtr	%r2,%r2			# char *
1578	llgtr	%r3,%r3			# compat_uptr_t *
1579	llgtr	%r4,%r4			# compat_uptr_t *
1580	jg	sys32_execve		# branch to system call
1581
1582ENTRY(sys_fanotify_init_wrapper)
1583	llgfr	%r2,%r2			# unsigned int
1584	llgfr	%r3,%r3			# unsigned int
1585	jg	sys_fanotify_init	# branch to system call
1586
1587ENTRY(sys_fanotify_mark_wrapper)
1588	lgfr	%r2,%r2			# int
1589	llgfr	%r3,%r3			# unsigned int
1590	sllg	%r4,%r4,32		# get high word of 64bit mask
1591	lr	%r4,%r5			# get low word of 64bit mask
1592	llgfr	%r5,%r6			# unsigned int
1593	llgt	%r6,164(%r15)		# char *
1594	jg	sys_fanotify_mark	# branch to system call
1595
1596ENTRY(sys_prlimit64_wrapper)
1597	lgfr	%r2,%r2			# pid_t
1598	llgfr	%r3,%r3			# unsigned int
1599	llgtr	%r4,%r4			# const struct rlimit64 __user *
1600	llgtr	%r5,%r5			# struct rlimit64 __user *
1601	jg	sys_prlimit64		# branch to system call
1602
1603ENTRY(sys_name_to_handle_at_wrapper)
1604	lgfr	%r2,%r2			# int
1605	llgtr	%r3,%r3			# const char __user *
1606	llgtr	%r4,%r4			# struct file_handle __user *
1607	llgtr	%r5,%r5			# int __user *
1608	lgfr	%r6,%r6			# int
1609	jg	sys_name_to_handle_at
1610
1611ENTRY(compat_sys_open_by_handle_at_wrapper)
1612	lgfr	%r2,%r2			# int
1613	llgtr	%r3,%r3			# struct file_handle __user *
1614	lgfr	%r4,%r4			# int
1615	jg	compat_sys_open_by_handle_at
1616
1617ENTRY(compat_sys_clock_adjtime_wrapper)
1618	lgfr	%r2,%r2			# clockid_t (int)
1619	llgtr	%r3,%r3			# struct compat_timex __user *
1620	jg	compat_sys_clock_adjtime
1621
1622ENTRY(sys_syncfs_wrapper)
1623	lgfr	%r2,%r2			# int
1624	jg	sys_syncfs
1625
1626ENTRY(sys_setns_wrapper)
1627	lgfr	%r2,%r2			# int
1628	lgfr	%r3,%r3			# int
1629	jg	sys_setns
1630
1631ENTRY(compat_sys_process_vm_readv_wrapper)
1632	lgfr	%r2,%r2			# compat_pid_t
1633	llgtr	%r3,%r3			# struct compat_iovec __user *
1634	llgfr	%r4,%r4			# unsigned long
1635	llgtr	%r5,%r5			# struct compat_iovec __user *
1636	llgfr	%r6,%r6			# unsigned long
1637	llgf	%r0,164(%r15)		# unsigned long
1638	stg	%r0,160(%r15)
1639	jg	sys_process_vm_readv
1640
1641ENTRY(compat_sys_process_vm_writev_wrapper)
1642	lgfr	%r2,%r2			# compat_pid_t
1643	llgtr	%r3,%r3			# struct compat_iovec __user *
1644	llgfr	%r4,%r4			# unsigned long
1645	llgtr	%r5,%r5			# struct compat_iovec __user *
1646	llgfr	%r6,%r6			# unsigned long
1647	llgf	%r0,164(%r15)		# unsigned long
1648	stg	%r0,160(%r15)
1649	jg	sys_process_vm_writev
1650