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