c04030e16d
I'm currently at the POSIX meeting and one thing covered was the incompatibility of Linux's link() with the POSIX definition. The name. Linux does not follow symlinks, POSIX requires it does. Even if somebody thinks this is a good default behavior we cannot change this because it would break the ABI. But the fact remains that some application might want this behavior. We have one chance to help implementing this without breaking the behavior. For this we could use the new linkat interface which would need a new flags parameter. If the new parameter is AT_SYMLINK_FOLLOW the new behavior could be invoked. I do not want to introduce such a patch now. But we could add the parameter now, just don't use it. The patch below would do this. Can we get this late patch applied before the release more or less fixes the syscall API? Signed-off-by: Ulrich Drepper <drepper@redhat.com> Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
1611 lines
42 KiB
ArmAsm
1611 lines
42 KiB
ArmAsm
/*
|
|
* arch/s390/kernel/compat_wrapper.S
|
|
* wrapper for 31 bit compatible system calls.
|
|
*
|
|
* Copyright (C) IBM Corp. 2000,2006
|
|
* Author(s): Gerhard Tonn (ton@de.ibm.com),
|
|
* Thomas Spatzier (tspat@de.ibm.com)
|
|
*/
|
|
|
|
.globl sys32_exit_wrapper
|
|
sys32_exit_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
jg sys_exit # branch to sys_exit
|
|
|
|
.globl sys32_read_wrapper
|
|
sys32_read_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # char *
|
|
llgfr %r4,%r4 # size_t
|
|
jg sys32_read # branch to sys_read
|
|
|
|
.globl sys32_write_wrapper
|
|
sys32_write_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # const char *
|
|
llgfr %r4,%r4 # size_t
|
|
jg sys32_write # branch to system call
|
|
|
|
.globl sys32_open_wrapper
|
|
sys32_open_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
lgfr %r3,%r3 # int
|
|
lgfr %r4,%r4 # int
|
|
jg sys_open # branch to system call
|
|
|
|
.globl sys32_close_wrapper
|
|
sys32_close_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
jg sys_close # branch to system call
|
|
|
|
.globl sys32_creat_wrapper
|
|
sys32_creat_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
lgfr %r3,%r3 # int
|
|
jg sys_creat # branch to system call
|
|
|
|
.globl sys32_link_wrapper
|
|
sys32_link_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgtr %r3,%r3 # const char *
|
|
jg sys_link # branch to system call
|
|
|
|
.globl sys32_unlink_wrapper
|
|
sys32_unlink_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
jg sys_unlink # branch to system call
|
|
|
|
.globl sys32_chdir_wrapper
|
|
sys32_chdir_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
jg sys_chdir # branch to system call
|
|
|
|
.globl sys32_time_wrapper
|
|
sys32_time_wrapper:
|
|
llgtr %r2,%r2 # int *
|
|
jg compat_sys_time # branch to system call
|
|
|
|
.globl sys32_mknod_wrapper
|
|
sys32_mknod_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
lgfr %r3,%r3 # int
|
|
llgfr %r4,%r4 # dev
|
|
jg sys_mknod # branch to system call
|
|
|
|
.globl sys32_chmod_wrapper
|
|
sys32_chmod_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgfr %r3,%r3 # mode_t
|
|
jg sys_chmod # branch to system call
|
|
|
|
.globl sys32_lchown16_wrapper
|
|
sys32_lchown16_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgfr %r3,%r3 # __kernel_old_uid_emu31_t
|
|
llgfr %r4,%r4 # __kernel_old_uid_emu31_t
|
|
jg sys32_lchown16 # branch to system call
|
|
|
|
.globl sys32_lseek_wrapper
|
|
sys32_lseek_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
lgfr %r3,%r3 # off_t
|
|
llgfr %r4,%r4 # unsigned int
|
|
jg sys_lseek # branch to system call
|
|
|
|
#sys32_getpid_wrapper # void
|
|
|
|
.globl sys32_mount_wrapper
|
|
sys32_mount_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # char *
|
|
llgtr %r4,%r4 # char *
|
|
llgfr %r5,%r5 # unsigned long
|
|
llgtr %r6,%r6 # void *
|
|
jg compat_sys_mount # branch to system call
|
|
|
|
.globl sys32_oldumount_wrapper
|
|
sys32_oldumount_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
jg sys_oldumount # branch to system call
|
|
|
|
.globl sys32_setuid16_wrapper
|
|
sys32_setuid16_wrapper:
|
|
llgfr %r2,%r2 # __kernel_old_uid_emu31_t
|
|
jg sys32_setuid16 # branch to system call
|
|
|
|
#sys32_getuid16_wrapper # void
|
|
|
|
.globl sys32_ptrace_wrapper
|
|
sys32_ptrace_wrapper:
|
|
lgfr %r2,%r2 # long
|
|
lgfr %r3,%r3 # long
|
|
llgtr %r4,%r4 # long
|
|
llgfr %r5,%r5 # long
|
|
jg sys_ptrace # branch to system call
|
|
|
|
.globl sys32_alarm_wrapper
|
|
sys32_alarm_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
jg sys_alarm # branch to system call
|
|
|
|
#sys32_pause_wrapper # void
|
|
|
|
.globl compat_sys_utime_wrapper
|
|
compat_sys_utime_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # struct compat_utimbuf *
|
|
jg compat_sys_utime # branch to system call
|
|
|
|
.globl sys32_access_wrapper
|
|
sys32_access_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
lgfr %r3,%r3 # int
|
|
jg sys_access # branch to system call
|
|
|
|
.globl sys32_nice_wrapper
|
|
sys32_nice_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
jg sys_nice # branch to system call
|
|
|
|
#sys32_sync_wrapper # void
|
|
|
|
.globl sys32_kill_wrapper
|
|
sys32_kill_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
lgfr %r3,%r3 # int
|
|
jg sys_kill # branch to system call
|
|
|
|
.globl sys32_rename_wrapper
|
|
sys32_rename_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgtr %r3,%r3 # const char *
|
|
jg sys_rename # branch to system call
|
|
|
|
.globl sys32_mkdir_wrapper
|
|
sys32_mkdir_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
lgfr %r3,%r3 # int
|
|
jg sys_mkdir # branch to system call
|
|
|
|
.globl sys32_rmdir_wrapper
|
|
sys32_rmdir_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
jg sys_rmdir # branch to system call
|
|
|
|
.globl sys32_dup_wrapper
|
|
sys32_dup_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
jg sys_dup # branch to system call
|
|
|
|
.globl sys32_pipe_wrapper
|
|
sys32_pipe_wrapper:
|
|
llgtr %r2,%r2 # u32 *
|
|
jg sys_pipe # branch to system call
|
|
|
|
.globl compat_sys_times_wrapper
|
|
compat_sys_times_wrapper:
|
|
llgtr %r2,%r2 # struct compat_tms *
|
|
jg compat_sys_times # branch to system call
|
|
|
|
.globl sys32_brk_wrapper
|
|
sys32_brk_wrapper:
|
|
llgtr %r2,%r2 # unsigned long
|
|
jg sys_brk # branch to system call
|
|
|
|
.globl sys32_setgid16_wrapper
|
|
sys32_setgid16_wrapper:
|
|
llgfr %r2,%r2 # __kernel_old_gid_emu31_t
|
|
jg sys32_setgid16 # branch to system call
|
|
|
|
#sys32_getgid16_wrapper # void
|
|
|
|
.globl sys32_signal_wrapper
|
|
sys32_signal_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # __sighandler_t
|
|
jg sys_signal
|
|
|
|
#sys32_geteuid16_wrapper # void
|
|
|
|
#sys32_getegid16_wrapper # void
|
|
|
|
.globl sys32_acct_wrapper
|
|
sys32_acct_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
jg sys_acct # branch to system call
|
|
|
|
.globl sys32_umount_wrapper
|
|
sys32_umount_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
lgfr %r3,%r3 # int
|
|
jg sys_umount # branch to system call
|
|
|
|
.globl compat_sys_ioctl_wrapper
|
|
compat_sys_ioctl_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgfr %r3,%r3 # unsigned int
|
|
llgfr %r4,%r4 # unsigned int
|
|
jg compat_sys_ioctl # branch to system call
|
|
|
|
.globl compat_sys_fcntl_wrapper
|
|
compat_sys_fcntl_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgfr %r3,%r3 # unsigned int
|
|
llgfr %r4,%r4 # unsigned long
|
|
jg compat_sys_fcntl # branch to system call
|
|
|
|
.globl sys32_setpgid_wrapper
|
|
sys32_setpgid_wrapper:
|
|
lgfr %r2,%r2 # pid_t
|
|
lgfr %r3,%r3 # pid_t
|
|
jg sys_setpgid # branch to system call
|
|
|
|
.globl sys32_umask_wrapper
|
|
sys32_umask_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
jg sys_umask # branch to system call
|
|
|
|
.globl sys32_chroot_wrapper
|
|
sys32_chroot_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
jg sys_chroot # branch to system call
|
|
|
|
.globl sys32_ustat_wrapper
|
|
sys32_ustat_wrapper:
|
|
llgfr %r2,%r2 # dev_t
|
|
llgtr %r3,%r3 # struct ustat *
|
|
jg sys_ustat
|
|
|
|
.globl sys32_dup2_wrapper
|
|
sys32_dup2_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgfr %r3,%r3 # unsigned int
|
|
jg sys_dup2 # branch to system call
|
|
|
|
#sys32_getppid_wrapper # void
|
|
|
|
#sys32_getpgrp_wrapper # void
|
|
|
|
#sys32_setsid_wrapper # void
|
|
|
|
.globl sys32_sigaction_wrapper
|
|
sys32_sigaction_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # const struct old_sigaction *
|
|
llgtr %r4,%r4 # struct old_sigaction32 *
|
|
jg sys32_sigaction # branch to system call
|
|
|
|
.globl sys32_setreuid16_wrapper
|
|
sys32_setreuid16_wrapper:
|
|
llgfr %r2,%r2 # __kernel_old_uid_emu31_t
|
|
llgfr %r3,%r3 # __kernel_old_uid_emu31_t
|
|
jg sys32_setreuid16 # branch to system call
|
|
|
|
.globl sys32_setregid16_wrapper
|
|
sys32_setregid16_wrapper:
|
|
llgfr %r2,%r2 # __kernel_old_gid_emu31_t
|
|
llgfr %r3,%r3 # __kernel_old_gid_emu31_t
|
|
jg sys32_setregid16 # branch to system call
|
|
|
|
.globl sys_sigsuspend_wrapper
|
|
sys_sigsuspend_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
lgfr %r3,%r3 # int
|
|
llgfr %r4,%r4 # old_sigset_t
|
|
jg sys_sigsuspend
|
|
|
|
.globl compat_sys_sigpending_wrapper
|
|
compat_sys_sigpending_wrapper:
|
|
llgtr %r2,%r2 # compat_old_sigset_t *
|
|
jg compat_sys_sigpending # branch to system call
|
|
|
|
.globl sys32_sethostname_wrapper
|
|
sys32_sethostname_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
lgfr %r3,%r3 # int
|
|
jg sys_sethostname # branch to system call
|
|
|
|
.globl compat_sys_setrlimit_wrapper
|
|
compat_sys_setrlimit_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # struct rlimit_emu31 *
|
|
jg compat_sys_setrlimit # branch to system call
|
|
|
|
.globl compat_sys_old_getrlimit_wrapper
|
|
compat_sys_old_getrlimit_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # struct rlimit_emu31 *
|
|
jg compat_sys_old_getrlimit # branch to system call
|
|
|
|
.globl compat_sys_getrlimit_wrapper
|
|
compat_sys_getrlimit_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # struct rlimit_emu31 *
|
|
jg compat_sys_getrlimit # branch to system call
|
|
|
|
.globl sys32_mmap2_wrapper
|
|
sys32_mmap2_wrapper:
|
|
llgtr %r2,%r2 # struct mmap_arg_struct_emu31 *
|
|
jg sys32_mmap2 # branch to system call
|
|
|
|
.globl compat_sys_getrusage_wrapper
|
|
compat_sys_getrusage_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # struct rusage_emu31 *
|
|
jg compat_sys_getrusage # branch to system call
|
|
|
|
.globl sys32_gettimeofday_wrapper
|
|
sys32_gettimeofday_wrapper:
|
|
llgtr %r2,%r2 # struct timeval_emu31 *
|
|
llgtr %r3,%r3 # struct timezone *
|
|
jg sys32_gettimeofday # branch to system call
|
|
|
|
.globl sys32_settimeofday_wrapper
|
|
sys32_settimeofday_wrapper:
|
|
llgtr %r2,%r2 # struct timeval_emu31 *
|
|
llgtr %r3,%r3 # struct timezone *
|
|
jg sys32_settimeofday # branch to system call
|
|
|
|
.globl sys32_getgroups16_wrapper
|
|
sys32_getgroups16_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # __kernel_old_gid_emu31_t *
|
|
jg sys32_getgroups16 # branch to system call
|
|
|
|
.globl sys32_setgroups16_wrapper
|
|
sys32_setgroups16_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # __kernel_old_gid_emu31_t *
|
|
jg sys32_setgroups16 # branch to system call
|
|
|
|
.globl sys32_symlink_wrapper
|
|
sys32_symlink_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgtr %r3,%r3 # const char *
|
|
jg sys_symlink # branch to system call
|
|
|
|
.globl sys32_readlink_wrapper
|
|
sys32_readlink_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgtr %r3,%r3 # char *
|
|
lgfr %r4,%r4 # int
|
|
jg sys_readlink # branch to system call
|
|
|
|
.globl sys32_uselib_wrapper
|
|
sys32_uselib_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
jg sys_uselib # branch to system call
|
|
|
|
.globl sys32_swapon_wrapper
|
|
sys32_swapon_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
lgfr %r3,%r3 # int
|
|
jg sys_swapon # branch to system call
|
|
|
|
.globl sys32_reboot_wrapper
|
|
sys32_reboot_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
lgfr %r3,%r3 # int
|
|
llgfr %r4,%r4 # unsigned int
|
|
llgtr %r5,%r5 # void *
|
|
jg sys_reboot # branch to system call
|
|
|
|
.globl old32_readdir_wrapper
|
|
old32_readdir_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # void *
|
|
llgfr %r4,%r4 # unsigned int
|
|
jg compat_sys_old_readdir # branch to system call
|
|
|
|
.globl old32_mmap_wrapper
|
|
old32_mmap_wrapper:
|
|
llgtr %r2,%r2 # struct mmap_arg_struct_emu31 *
|
|
jg old32_mmap # branch to system call
|
|
|
|
.globl sys32_munmap_wrapper
|
|
sys32_munmap_wrapper:
|
|
llgfr %r2,%r2 # unsigned long
|
|
llgfr %r3,%r3 # size_t
|
|
jg sys_munmap # branch to system call
|
|
|
|
.globl sys32_truncate_wrapper
|
|
sys32_truncate_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgfr %r3,%r3 # unsigned long
|
|
jg sys_truncate # branch to system call
|
|
|
|
.globl sys32_ftruncate_wrapper
|
|
sys32_ftruncate_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgfr %r3,%r3 # unsigned long
|
|
jg sys_ftruncate # branch to system call
|
|
|
|
.globl sys32_fchmod_wrapper
|
|
sys32_fchmod_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgfr %r3,%r3 # mode_t
|
|
jg sys_fchmod # branch to system call
|
|
|
|
.globl sys32_fchown16_wrapper
|
|
sys32_fchown16_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgfr %r3,%r3 # compat_uid_t
|
|
llgfr %r4,%r4 # compat_uid_t
|
|
jg sys32_fchown16 # branch to system call
|
|
|
|
.globl sys32_getpriority_wrapper
|
|
sys32_getpriority_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
lgfr %r3,%r3 # int
|
|
jg sys_getpriority # branch to system call
|
|
|
|
.globl sys32_setpriority_wrapper
|
|
sys32_setpriority_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
lgfr %r3,%r3 # int
|
|
lgfr %r4,%r4 # int
|
|
jg sys_setpriority # branch to system call
|
|
|
|
.globl compat_sys_statfs_wrapper
|
|
compat_sys_statfs_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # struct compat_statfs *
|
|
jg compat_sys_statfs # branch to system call
|
|
|
|
.globl compat_sys_fstatfs_wrapper
|
|
compat_sys_fstatfs_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # struct compat_statfs *
|
|
jg compat_sys_fstatfs # branch to system call
|
|
|
|
.globl compat_sys_socketcall_wrapper
|
|
compat_sys_socketcall_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # u32 *
|
|
jg compat_sys_socketcall # branch to system call
|
|
|
|
.globl sys32_syslog_wrapper
|
|
sys32_syslog_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # char *
|
|
lgfr %r4,%r4 # int
|
|
jg sys_syslog # branch to system call
|
|
|
|
.globl compat_sys_setitimer_wrapper
|
|
compat_sys_setitimer_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # struct itimerval_emu31 *
|
|
llgtr %r4,%r4 # struct itimerval_emu31 *
|
|
jg compat_sys_setitimer # branch to system call
|
|
|
|
.globl compat_sys_getitimer_wrapper
|
|
compat_sys_getitimer_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # struct itimerval_emu31 *
|
|
jg compat_sys_getitimer # branch to system call
|
|
|
|
.globl compat_sys_newstat_wrapper
|
|
compat_sys_newstat_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # struct stat_emu31 *
|
|
jg compat_sys_newstat # branch to system call
|
|
|
|
.globl compat_sys_newlstat_wrapper
|
|
compat_sys_newlstat_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # struct stat_emu31 *
|
|
jg compat_sys_newlstat # branch to system call
|
|
|
|
.globl compat_sys_newfstat_wrapper
|
|
compat_sys_newfstat_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # struct stat_emu31 *
|
|
jg compat_sys_newfstat # branch to system call
|
|
|
|
#sys32_vhangup_wrapper # void
|
|
|
|
.globl compat_sys_wait4_wrapper
|
|
compat_sys_wait4_wrapper:
|
|
lgfr %r2,%r2 # pid_t
|
|
llgtr %r3,%r3 # unsigned int *
|
|
lgfr %r4,%r4 # int
|
|
llgtr %r5,%r5 # struct rusage *
|
|
jg compat_sys_wait4 # branch to system call
|
|
|
|
.globl sys32_swapoff_wrapper
|
|
sys32_swapoff_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
jg sys_swapoff # branch to system call
|
|
|
|
.globl sys32_sysinfo_wrapper
|
|
sys32_sysinfo_wrapper:
|
|
llgtr %r2,%r2 # struct sysinfo_emu31 *
|
|
jg sys32_sysinfo # branch to system call
|
|
|
|
.globl sys32_ipc_wrapper
|
|
sys32_ipc_wrapper:
|
|
llgfr %r2,%r2 # uint
|
|
lgfr %r3,%r3 # int
|
|
lgfr %r4,%r4 # int
|
|
lgfr %r5,%r5 # int
|
|
llgfr %r6,%r6 # u32
|
|
jg sys32_ipc # branch to system call
|
|
|
|
.globl sys32_fsync_wrapper
|
|
sys32_fsync_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
jg sys_fsync # branch to system call
|
|
|
|
#sys32_sigreturn_wrapper # done in sigreturn_glue
|
|
|
|
#sys32_clone_wrapper # done in clone_glue
|
|
|
|
.globl sys32_setdomainname_wrapper
|
|
sys32_setdomainname_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
lgfr %r3,%r3 # int
|
|
jg sys_setdomainname # branch to system call
|
|
|
|
.globl sys32_newuname_wrapper
|
|
sys32_newuname_wrapper:
|
|
llgtr %r2,%r2 # struct new_utsname *
|
|
jg s390x_newuname # branch to system call
|
|
|
|
.globl sys32_adjtimex_wrapper
|
|
sys32_adjtimex_wrapper:
|
|
llgtr %r2,%r2 # struct timex_emu31 *
|
|
jg sys32_adjtimex # branch to system call
|
|
|
|
.globl sys32_mprotect_wrapper
|
|
sys32_mprotect_wrapper:
|
|
llgtr %r2,%r2 # unsigned long (actually pointer
|
|
llgfr %r3,%r3 # size_t
|
|
llgfr %r4,%r4 # unsigned long
|
|
jg sys_mprotect # branch to system call
|
|
|
|
.globl compat_sys_sigprocmask_wrapper
|
|
compat_sys_sigprocmask_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # compat_old_sigset_t *
|
|
llgtr %r4,%r4 # compat_old_sigset_t *
|
|
jg compat_sys_sigprocmask # branch to system call
|
|
|
|
.globl sys32_init_module_wrapper
|
|
sys32_init_module_wrapper:
|
|
llgtr %r2,%r2 # void *
|
|
llgfr %r3,%r3 # unsigned long
|
|
llgtr %r4,%r4 # char *
|
|
jg sys32_init_module # branch to system call
|
|
|
|
.globl sys32_delete_module_wrapper
|
|
sys32_delete_module_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgfr %r3,%r3 # unsigned int
|
|
jg sys32_delete_module # branch to system call
|
|
|
|
.globl sys32_quotactl_wrapper
|
|
sys32_quotactl_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # const char *
|
|
llgfr %r4,%r4 # qid_t
|
|
llgtr %r5,%r5 # caddr_t
|
|
jg sys_quotactl # branch to system call
|
|
|
|
.globl sys32_getpgid_wrapper
|
|
sys32_getpgid_wrapper:
|
|
lgfr %r2,%r2 # pid_t
|
|
jg sys_getpgid # branch to system call
|
|
|
|
.globl sys32_fchdir_wrapper
|
|
sys32_fchdir_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
jg sys_fchdir # branch to system call
|
|
|
|
.globl sys32_bdflush_wrapper
|
|
sys32_bdflush_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
lgfr %r3,%r3 # long
|
|
jg sys_bdflush # branch to system call
|
|
|
|
.globl sys32_sysfs_wrapper
|
|
sys32_sysfs_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgfr %r3,%r3 # unsigned long
|
|
llgfr %r4,%r4 # unsigned long
|
|
jg sys_sysfs # branch to system call
|
|
|
|
.globl sys32_personality_wrapper
|
|
sys32_personality_wrapper:
|
|
llgfr %r2,%r2 # unsigned long
|
|
jg s390x_personality # branch to system call
|
|
|
|
.globl sys32_setfsuid16_wrapper
|
|
sys32_setfsuid16_wrapper:
|
|
llgfr %r2,%r2 # __kernel_old_uid_emu31_t
|
|
jg sys32_setfsuid16 # branch to system call
|
|
|
|
.globl sys32_setfsgid16_wrapper
|
|
sys32_setfsgid16_wrapper:
|
|
llgfr %r2,%r2 # __kernel_old_gid_emu31_t
|
|
jg sys32_setfsgid16 # branch to system call
|
|
|
|
.globl sys32_llseek_wrapper
|
|
sys32_llseek_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgfr %r3,%r3 # unsigned long
|
|
llgfr %r4,%r4 # unsigned long
|
|
llgtr %r5,%r5 # loff_t *
|
|
llgfr %r6,%r6 # unsigned int
|
|
jg sys_llseek # branch to system call
|
|
|
|
.globl sys32_getdents_wrapper
|
|
sys32_getdents_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # void *
|
|
llgfr %r4,%r4 # unsigned int
|
|
jg compat_sys_getdents # branch to system call
|
|
|
|
.globl compat_sys_select_wrapper
|
|
compat_sys_select_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # compat_fd_set *
|
|
llgtr %r4,%r4 # compat_fd_set *
|
|
llgtr %r5,%r5 # compat_fd_set *
|
|
llgtr %r6,%r6 # struct compat_timeval *
|
|
jg compat_sys_select # branch to system call
|
|
|
|
.globl sys32_flock_wrapper
|
|
sys32_flock_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgfr %r3,%r3 # unsigned int
|
|
jg sys_flock # branch to system call
|
|
|
|
.globl sys32_msync_wrapper
|
|
sys32_msync_wrapper:
|
|
llgfr %r2,%r2 # unsigned long
|
|
llgfr %r3,%r3 # size_t
|
|
lgfr %r4,%r4 # int
|
|
jg sys_msync # branch to system call
|
|
|
|
.globl compat_sys_readv_wrapper
|
|
compat_sys_readv_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # const struct compat_iovec *
|
|
llgfr %r4,%r4 # unsigned long
|
|
jg compat_sys_readv # branch to system call
|
|
|
|
.globl compat_sys_writev_wrapper
|
|
compat_sys_writev_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # const struct compat_iovec *
|
|
llgfr %r4,%r4 # unsigned long
|
|
jg compat_sys_writev # branch to system call
|
|
|
|
.globl sys32_getsid_wrapper
|
|
sys32_getsid_wrapper:
|
|
lgfr %r2,%r2 # pid_t
|
|
jg sys_getsid # branch to system call
|
|
|
|
.globl sys32_fdatasync_wrapper
|
|
sys32_fdatasync_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
jg sys_fdatasync # branch to system call
|
|
|
|
#sys32_sysctl_wrapper # tbd
|
|
|
|
.globl sys32_mlock_wrapper
|
|
sys32_mlock_wrapper:
|
|
llgfr %r2,%r2 # unsigned long
|
|
llgfr %r3,%r3 # size_t
|
|
jg sys_mlock # branch to system call
|
|
|
|
.globl sys32_munlock_wrapper
|
|
sys32_munlock_wrapper:
|
|
llgfr %r2,%r2 # unsigned long
|
|
llgfr %r3,%r3 # size_t
|
|
jg sys_munlock # branch to system call
|
|
|
|
.globl sys32_mlockall_wrapper
|
|
sys32_mlockall_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
jg sys_mlockall # branch to system call
|
|
|
|
#sys32_munlockall_wrapper # void
|
|
|
|
.globl sys32_sched_setparam_wrapper
|
|
sys32_sched_setparam_wrapper:
|
|
lgfr %r2,%r2 # pid_t
|
|
llgtr %r3,%r3 # struct sched_param *
|
|
jg sys_sched_setparam # branch to system call
|
|
|
|
.globl sys32_sched_getparam_wrapper
|
|
sys32_sched_getparam_wrapper:
|
|
lgfr %r2,%r2 # pid_t
|
|
llgtr %r3,%r3 # struct sched_param *
|
|
jg sys_sched_getparam # branch to system call
|
|
|
|
.globl sys32_sched_setscheduler_wrapper
|
|
sys32_sched_setscheduler_wrapper:
|
|
lgfr %r2,%r2 # pid_t
|
|
lgfr %r3,%r3 # int
|
|
llgtr %r4,%r4 # struct sched_param *
|
|
jg sys_sched_setscheduler # branch to system call
|
|
|
|
.globl sys32_sched_getscheduler_wrapper
|
|
sys32_sched_getscheduler_wrapper:
|
|
lgfr %r2,%r2 # pid_t
|
|
jg sys_sched_getscheduler # branch to system call
|
|
|
|
#sys32_sched_yield_wrapper # void
|
|
|
|
.globl sys32_sched_get_priority_max_wrapper
|
|
sys32_sched_get_priority_max_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
jg sys_sched_get_priority_max # branch to system call
|
|
|
|
.globl sys32_sched_get_priority_min_wrapper
|
|
sys32_sched_get_priority_min_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
jg sys_sched_get_priority_min # branch to system call
|
|
|
|
.globl sys32_sched_rr_get_interval_wrapper
|
|
sys32_sched_rr_get_interval_wrapper:
|
|
lgfr %r2,%r2 # pid_t
|
|
llgtr %r3,%r3 # struct compat_timespec *
|
|
jg sys32_sched_rr_get_interval # branch to system call
|
|
|
|
.globl compat_sys_nanosleep_wrapper
|
|
compat_sys_nanosleep_wrapper:
|
|
llgtr %r2,%r2 # struct compat_timespec *
|
|
llgtr %r3,%r3 # struct compat_timespec *
|
|
jg compat_sys_nanosleep # branch to system call
|
|
|
|
.globl sys32_mremap_wrapper
|
|
sys32_mremap_wrapper:
|
|
llgfr %r2,%r2 # unsigned long
|
|
llgfr %r3,%r3 # unsigned long
|
|
llgfr %r4,%r4 # unsigned long
|
|
llgfr %r5,%r5 # unsigned long
|
|
llgfr %r6,%r6 # unsigned long
|
|
jg sys_mremap # branch to system call
|
|
|
|
.globl sys32_setresuid16_wrapper
|
|
sys32_setresuid16_wrapper:
|
|
llgfr %r2,%r2 # __kernel_old_uid_emu31_t
|
|
llgfr %r3,%r3 # __kernel_old_uid_emu31_t
|
|
llgfr %r4,%r4 # __kernel_old_uid_emu31_t
|
|
jg sys32_setresuid16 # branch to system call
|
|
|
|
.globl sys32_getresuid16_wrapper
|
|
sys32_getresuid16_wrapper:
|
|
llgtr %r2,%r2 # __kernel_old_uid_emu31_t *
|
|
llgtr %r3,%r3 # __kernel_old_uid_emu31_t *
|
|
llgtr %r4,%r4 # __kernel_old_uid_emu31_t *
|
|
jg sys32_getresuid16 # branch to system call
|
|
|
|
.globl sys32_poll_wrapper
|
|
sys32_poll_wrapper:
|
|
llgtr %r2,%r2 # struct pollfd *
|
|
llgfr %r3,%r3 # unsigned int
|
|
lgfr %r4,%r4 # long
|
|
jg sys_poll # branch to system call
|
|
|
|
.globl compat_sys_nfsservctl_wrapper
|
|
compat_sys_nfsservctl_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # struct compat_nfsctl_arg*
|
|
llgtr %r4,%r4 # union compat_nfsctl_res*
|
|
jg compat_sys_nfsservctl # branch to system call
|
|
|
|
.globl sys32_setresgid16_wrapper
|
|
sys32_setresgid16_wrapper:
|
|
llgfr %r2,%r2 # __kernel_old_gid_emu31_t
|
|
llgfr %r3,%r3 # __kernel_old_gid_emu31_t
|
|
llgfr %r4,%r4 # __kernel_old_gid_emu31_t
|
|
jg sys32_setresgid16 # branch to system call
|
|
|
|
.globl sys32_getresgid16_wrapper
|
|
sys32_getresgid16_wrapper:
|
|
llgtr %r2,%r2 # __kernel_old_gid_emu31_t *
|
|
llgtr %r3,%r3 # __kernel_old_gid_emu31_t *
|
|
llgtr %r4,%r4 # __kernel_old_gid_emu31_t *
|
|
jg sys32_getresgid16 # branch to system call
|
|
|
|
.globl sys32_prctl_wrapper
|
|
sys32_prctl_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgfr %r3,%r3 # unsigned long
|
|
llgfr %r4,%r4 # unsigned long
|
|
llgfr %r5,%r5 # unsigned long
|
|
llgfr %r6,%r6 # unsigned long
|
|
jg sys_prctl # branch to system call
|
|
|
|
#sys32_rt_sigreturn_wrapper # done in rt_sigreturn_glue
|
|
|
|
.globl sys32_rt_sigaction_wrapper
|
|
sys32_rt_sigaction_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # const struct sigaction_emu31 *
|
|
llgtr %r4,%r4 # const struct sigaction_emu31 *
|
|
llgfr %r5,%r5 # size_t
|
|
jg sys32_rt_sigaction # branch to system call
|
|
|
|
.globl sys32_rt_sigprocmask_wrapper
|
|
sys32_rt_sigprocmask_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # old_sigset_emu31 *
|
|
llgtr %r4,%r4 # old_sigset_emu31 *
|
|
llgfr %r5,%r5 # size_t
|
|
jg sys32_rt_sigprocmask # branch to system call
|
|
|
|
.globl sys32_rt_sigpending_wrapper
|
|
sys32_rt_sigpending_wrapper:
|
|
llgtr %r2,%r2 # sigset_emu31 *
|
|
llgfr %r3,%r3 # size_t
|
|
jg sys32_rt_sigpending # branch to system call
|
|
|
|
.globl compat_sys_rt_sigtimedwait_wrapper
|
|
compat_sys_rt_sigtimedwait_wrapper:
|
|
llgtr %r2,%r2 # const sigset_emu31_t *
|
|
llgtr %r3,%r3 # siginfo_emu31_t *
|
|
llgtr %r4,%r4 # const struct compat_timespec *
|
|
llgfr %r5,%r5 # size_t
|
|
jg compat_sys_rt_sigtimedwait # branch to system call
|
|
|
|
.globl sys32_rt_sigqueueinfo_wrapper
|
|
sys32_rt_sigqueueinfo_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
lgfr %r3,%r3 # int
|
|
llgtr %r4,%r4 # siginfo_emu31_t *
|
|
jg sys32_rt_sigqueueinfo # branch to system call
|
|
|
|
.globl compat_sys_rt_sigsuspend_wrapper
|
|
compat_sys_rt_sigsuspend_wrapper:
|
|
llgtr %r2,%r2 # compat_sigset_t *
|
|
llgfr %r3,%r3 # compat_size_t
|
|
jg compat_sys_rt_sigsuspend
|
|
|
|
.globl sys32_pread64_wrapper
|
|
sys32_pread64_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # char *
|
|
llgfr %r4,%r4 # size_t
|
|
llgfr %r5,%r5 # u32
|
|
llgfr %r6,%r6 # u32
|
|
jg sys32_pread64 # branch to system call
|
|
|
|
.globl sys32_pwrite64_wrapper
|
|
sys32_pwrite64_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # const char *
|
|
llgfr %r4,%r4 # size_t
|
|
llgfr %r5,%r5 # u32
|
|
llgfr %r6,%r6 # u32
|
|
jg sys32_pwrite64 # branch to system call
|
|
|
|
.globl sys32_chown16_wrapper
|
|
sys32_chown16_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgfr %r3,%r3 # __kernel_old_uid_emu31_t
|
|
llgfr %r4,%r4 # __kernel_old_gid_emu31_t
|
|
jg sys32_chown16 # branch to system call
|
|
|
|
.globl sys32_getcwd_wrapper
|
|
sys32_getcwd_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgfr %r3,%r3 # unsigned long
|
|
jg sys_getcwd # branch to system call
|
|
|
|
.globl sys32_capget_wrapper
|
|
sys32_capget_wrapper:
|
|
llgtr %r2,%r2 # cap_user_header_t
|
|
llgtr %r3,%r3 # cap_user_data_t
|
|
jg sys_capget # branch to system call
|
|
|
|
.globl sys32_capset_wrapper
|
|
sys32_capset_wrapper:
|
|
llgtr %r2,%r2 # cap_user_header_t
|
|
llgtr %r3,%r3 # const cap_user_data_t
|
|
jg sys_capset # branch to system call
|
|
|
|
.globl sys32_sigaltstack_wrapper
|
|
sys32_sigaltstack_wrapper:
|
|
llgtr %r2,%r2 # const stack_emu31_t *
|
|
llgtr %r3,%r3 # stack_emu31_t *
|
|
jg sys32_sigaltstack
|
|
|
|
.globl sys32_sendfile_wrapper
|
|
sys32_sendfile_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
lgfr %r3,%r3 # int
|
|
llgtr %r4,%r4 # __kernel_off_emu31_t *
|
|
llgfr %r5,%r5 # size_t
|
|
jg sys32_sendfile # branch to system call
|
|
|
|
#sys32_vfork_wrapper # done in vfork_glue
|
|
|
|
.globl sys32_truncate64_wrapper
|
|
sys32_truncate64_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgfr %r3,%r3 # unsigned long
|
|
llgfr %r4,%r4 # unsigned long
|
|
jg sys32_truncate64 # branch to system call
|
|
|
|
.globl sys32_ftruncate64_wrapper
|
|
sys32_ftruncate64_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgfr %r3,%r3 # unsigned long
|
|
llgfr %r4,%r4 # unsigned long
|
|
jg sys32_ftruncate64 # branch to system call
|
|
|
|
.globl sys32_lchown_wrapper
|
|
sys32_lchown_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgfr %r3,%r3 # uid_t
|
|
llgfr %r4,%r4 # gid_t
|
|
jg sys_lchown # branch to system call
|
|
|
|
#sys32_getuid_wrapper # void
|
|
#sys32_getgid_wrapper # void
|
|
#sys32_geteuid_wrapper # void
|
|
#sys32_getegid_wrapper # void
|
|
|
|
.globl sys32_setreuid_wrapper
|
|
sys32_setreuid_wrapper:
|
|
llgfr %r2,%r2 # uid_t
|
|
llgfr %r3,%r3 # uid_t
|
|
jg sys_setreuid # branch to system call
|
|
|
|
.globl sys32_setregid_wrapper
|
|
sys32_setregid_wrapper:
|
|
llgfr %r2,%r2 # gid_t
|
|
llgfr %r3,%r3 # gid_t
|
|
jg sys_setregid # branch to system call
|
|
|
|
.globl sys32_getgroups_wrapper
|
|
sys32_getgroups_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # gid_t *
|
|
jg sys_getgroups # branch to system call
|
|
|
|
.globl sys32_setgroups_wrapper
|
|
sys32_setgroups_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # gid_t *
|
|
jg sys_setgroups # branch to system call
|
|
|
|
.globl sys32_fchown_wrapper
|
|
sys32_fchown_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgfr %r3,%r3 # uid_t
|
|
llgfr %r4,%r4 # gid_t
|
|
jg sys_fchown # branch to system call
|
|
|
|
.globl sys32_setresuid_wrapper
|
|
sys32_setresuid_wrapper:
|
|
llgfr %r2,%r2 # uid_t
|
|
llgfr %r3,%r3 # uid_t
|
|
llgfr %r4,%r4 # uid_t
|
|
jg sys_setresuid # branch to system call
|
|
|
|
.globl sys32_getresuid_wrapper
|
|
sys32_getresuid_wrapper:
|
|
llgtr %r2,%r2 # uid_t *
|
|
llgtr %r3,%r3 # uid_t *
|
|
llgtr %r4,%r4 # uid_t *
|
|
jg sys_getresuid # branch to system call
|
|
|
|
.globl sys32_setresgid_wrapper
|
|
sys32_setresgid_wrapper:
|
|
llgfr %r2,%r2 # gid_t
|
|
llgfr %r3,%r3 # gid_t
|
|
llgfr %r4,%r4 # gid_t
|
|
jg sys_setresgid # branch to system call
|
|
|
|
.globl sys32_getresgid_wrapper
|
|
sys32_getresgid_wrapper:
|
|
llgtr %r2,%r2 # gid_t *
|
|
llgtr %r3,%r3 # gid_t *
|
|
llgtr %r4,%r4 # gid_t *
|
|
jg sys_getresgid # branch to system call
|
|
|
|
.globl sys32_chown_wrapper
|
|
sys32_chown_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgfr %r3,%r3 # uid_t
|
|
llgfr %r4,%r4 # gid_t
|
|
jg sys_chown # branch to system call
|
|
|
|
.globl sys32_setuid_wrapper
|
|
sys32_setuid_wrapper:
|
|
llgfr %r2,%r2 # uid_t
|
|
jg sys_setuid # branch to system call
|
|
|
|
.globl sys32_setgid_wrapper
|
|
sys32_setgid_wrapper:
|
|
llgfr %r2,%r2 # gid_t
|
|
jg sys_setgid # branch to system call
|
|
|
|
.globl sys32_setfsuid_wrapper
|
|
sys32_setfsuid_wrapper:
|
|
llgfr %r2,%r2 # uid_t
|
|
jg sys_setfsuid # branch to system call
|
|
|
|
.globl sys32_setfsgid_wrapper
|
|
sys32_setfsgid_wrapper:
|
|
llgfr %r2,%r2 # gid_t
|
|
jg sys_setfsgid # branch to system call
|
|
|
|
.globl sys32_pivot_root_wrapper
|
|
sys32_pivot_root_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgtr %r3,%r3 # const char *
|
|
jg sys_pivot_root # branch to system call
|
|
|
|
.globl sys32_mincore_wrapper
|
|
sys32_mincore_wrapper:
|
|
llgfr %r2,%r2 # unsigned long
|
|
llgfr %r3,%r3 # size_t
|
|
llgtr %r4,%r4 # unsigned char *
|
|
jg sys_mincore # branch to system call
|
|
|
|
.globl sys32_madvise_wrapper
|
|
sys32_madvise_wrapper:
|
|
llgfr %r2,%r2 # unsigned long
|
|
llgfr %r3,%r3 # size_t
|
|
lgfr %r4,%r4 # int
|
|
jg sys_madvise # branch to system call
|
|
|
|
.globl sys32_getdents64_wrapper
|
|
sys32_getdents64_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # void *
|
|
llgfr %r4,%r4 # unsigned int
|
|
jg sys_getdents64 # branch to system call
|
|
|
|
.globl compat_sys_fcntl64_wrapper
|
|
compat_sys_fcntl64_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgfr %r3,%r3 # unsigned int
|
|
llgfr %r4,%r4 # unsigned long
|
|
jg compat_sys_fcntl64 # branch to system call
|
|
|
|
.globl sys32_stat64_wrapper
|
|
sys32_stat64_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # struct stat64 *
|
|
jg sys32_stat64 # branch to system call
|
|
|
|
.globl sys32_lstat64_wrapper
|
|
sys32_lstat64_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # struct stat64 *
|
|
jg sys32_lstat64 # branch to system call
|
|
|
|
.globl sys32_stime_wrapper
|
|
sys32_stime_wrapper:
|
|
llgtr %r2,%r2 # long *
|
|
jg compat_sys_stime # branch to system call
|
|
|
|
.globl sys32_sysctl_wrapper
|
|
sys32_sysctl_wrapper:
|
|
llgtr %r2,%r2 # struct __sysctl_args32 *
|
|
jg sys32_sysctl
|
|
|
|
.globl sys32_fstat64_wrapper
|
|
sys32_fstat64_wrapper:
|
|
llgfr %r2,%r2 # unsigned long
|
|
llgtr %r3,%r3 # struct stat64 *
|
|
jg sys32_fstat64 # branch to system call
|
|
|
|
.globl compat_sys_futex_wrapper
|
|
compat_sys_futex_wrapper:
|
|
llgtr %r2,%r2 # u32 *
|
|
lgfr %r3,%r3 # int
|
|
lgfr %r4,%r4 # int
|
|
llgtr %r5,%r5 # struct compat_timespec *
|
|
llgtr %r6,%r6 # u32 *
|
|
lgf %r0,164(%r15) # int
|
|
stg %r0,160(%r15)
|
|
jg compat_sys_futex # branch to system call
|
|
|
|
.globl sys32_setxattr_wrapper
|
|
sys32_setxattr_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # char *
|
|
llgtr %r4,%r4 # void *
|
|
llgfr %r5,%r5 # size_t
|
|
lgfr %r6,%r6 # int
|
|
jg sys_setxattr
|
|
|
|
.globl sys32_lsetxattr_wrapper
|
|
sys32_lsetxattr_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # char *
|
|
llgtr %r4,%r4 # void *
|
|
llgfr %r5,%r5 # size_t
|
|
lgfr %r6,%r6 # int
|
|
jg sys_lsetxattr
|
|
|
|
.globl sys32_fsetxattr_wrapper
|
|
sys32_fsetxattr_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # char *
|
|
llgtr %r4,%r4 # void *
|
|
llgfr %r5,%r5 # size_t
|
|
lgfr %r6,%r6 # int
|
|
jg sys_fsetxattr
|
|
|
|
.globl sys32_getxattr_wrapper
|
|
sys32_getxattr_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # char *
|
|
llgtr %r4,%r4 # void *
|
|
llgfr %r5,%r5 # size_t
|
|
jg sys_getxattr
|
|
|
|
.globl sys32_lgetxattr_wrapper
|
|
sys32_lgetxattr_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # char *
|
|
llgtr %r4,%r4 # void *
|
|
llgfr %r5,%r5 # size_t
|
|
jg sys_lgetxattr
|
|
|
|
.globl sys32_fgetxattr_wrapper
|
|
sys32_fgetxattr_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # char *
|
|
llgtr %r4,%r4 # void *
|
|
llgfr %r5,%r5 # size_t
|
|
jg sys_fgetxattr
|
|
|
|
.globl sys32_listxattr_wrapper
|
|
sys32_listxattr_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # char *
|
|
llgfr %r4,%r4 # size_t
|
|
jg sys_listxattr
|
|
|
|
.globl sys32_llistxattr_wrapper
|
|
sys32_llistxattr_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # char *
|
|
llgfr %r4,%r4 # size_t
|
|
jg sys_llistxattr
|
|
|
|
.globl sys32_flistxattr_wrapper
|
|
sys32_flistxattr_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # char *
|
|
llgfr %r4,%r4 # size_t
|
|
jg sys_flistxattr
|
|
|
|
.globl sys32_removexattr_wrapper
|
|
sys32_removexattr_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # char *
|
|
jg sys_removexattr
|
|
|
|
.globl sys32_lremovexattr_wrapper
|
|
sys32_lremovexattr_wrapper:
|
|
llgtr %r2,%r2 # char *
|
|
llgtr %r3,%r3 # char *
|
|
jg sys_lremovexattr
|
|
|
|
.globl sys32_fremovexattr_wrapper
|
|
sys32_fremovexattr_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # char *
|
|
jg sys_fremovexattr
|
|
|
|
.globl sys32_sched_setaffinity_wrapper
|
|
sys32_sched_setaffinity_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgfr %r3,%r3 # unsigned int
|
|
llgtr %r4,%r4 # unsigned long *
|
|
jg compat_sys_sched_setaffinity
|
|
|
|
.globl sys32_sched_getaffinity_wrapper
|
|
sys32_sched_getaffinity_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgfr %r3,%r3 # unsigned int
|
|
llgtr %r4,%r4 # unsigned long *
|
|
jg compat_sys_sched_getaffinity
|
|
|
|
.globl sys32_exit_group_wrapper
|
|
sys32_exit_group_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
jg sys_exit_group # branch to system call
|
|
|
|
.globl sys32_set_tid_address_wrapper
|
|
sys32_set_tid_address_wrapper:
|
|
llgtr %r2,%r2 # int *
|
|
jg sys_set_tid_address # branch to system call
|
|
|
|
.globl sys_epoll_create_wrapper
|
|
sys_epoll_create_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
jg sys_epoll_create # branch to system call
|
|
|
|
.globl sys_epoll_ctl_wrapper
|
|
sys_epoll_ctl_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
lgfr %r3,%r3 # int
|
|
lgfr %r4,%r4 # int
|
|
llgtr %r5,%r5 # struct epoll_event *
|
|
jg sys_epoll_ctl # branch to system call
|
|
|
|
.globl sys_epoll_wait_wrapper
|
|
sys_epoll_wait_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # struct epoll_event *
|
|
lgfr %r4,%r4 # int
|
|
lgfr %r5,%r5 # int
|
|
jg sys_epoll_wait # branch to system call
|
|
|
|
.globl sys32_lookup_dcookie_wrapper
|
|
sys32_lookup_dcookie_wrapper:
|
|
sllg %r2,%r2,32 # get high word of 64bit dcookie
|
|
or %r2,%r3 # get low word of 64bit dcookie
|
|
llgtr %r3,%r4 # char *
|
|
llgfr %r4,%r5 # size_t
|
|
jg sys_lookup_dcookie
|
|
|
|
.globl sys32_fadvise64_wrapper
|
|
sys32_fadvise64_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
sllg %r3,%r3,32 # get high word of 64bit loff_t
|
|
or %r3,%r4 # get low word of 64bit loff_t
|
|
llgfr %r4,%r5 # size_t (unsigned long)
|
|
lgfr %r5,%r6 # int
|
|
jg sys32_fadvise64
|
|
|
|
.globl sys32_fadvise64_64_wrapper
|
|
sys32_fadvise64_64_wrapper:
|
|
llgtr %r2,%r2 # struct fadvise64_64_args *
|
|
jg sys32_fadvise64_64
|
|
|
|
.globl sys32_clock_settime_wrapper
|
|
sys32_clock_settime_wrapper:
|
|
lgfr %r2,%r2 # clockid_t (int)
|
|
llgtr %r3,%r3 # struct compat_timespec *
|
|
jg compat_sys_clock_settime
|
|
|
|
.globl sys32_clock_gettime_wrapper
|
|
sys32_clock_gettime_wrapper:
|
|
lgfr %r2,%r2 # clockid_t (int)
|
|
llgtr %r3,%r3 # struct compat_timespec *
|
|
jg compat_sys_clock_gettime
|
|
|
|
.globl sys32_clock_getres_wrapper
|
|
sys32_clock_getres_wrapper:
|
|
lgfr %r2,%r2 # clockid_t (int)
|
|
llgtr %r3,%r3 # struct compat_timespec *
|
|
jg compat_sys_clock_getres
|
|
|
|
.globl sys32_clock_nanosleep_wrapper
|
|
sys32_clock_nanosleep_wrapper:
|
|
lgfr %r2,%r2 # clockid_t (int)
|
|
lgfr %r3,%r3 # int
|
|
llgtr %r4,%r4 # struct compat_timespec *
|
|
llgtr %r5,%r5 # struct compat_timespec *
|
|
jg compat_sys_clock_nanosleep
|
|
|
|
.globl sys32_timer_create_wrapper
|
|
sys32_timer_create_wrapper:
|
|
lgfr %r2,%r2 # timer_t (int)
|
|
llgtr %r3,%r3 # struct compat_sigevent *
|
|
llgtr %r4,%r4 # timer_t *
|
|
jg compat_sys_timer_create
|
|
|
|
.globl sys32_timer_settime_wrapper
|
|
sys32_timer_settime_wrapper:
|
|
lgfr %r2,%r2 # timer_t (int)
|
|
lgfr %r3,%r3 # int
|
|
llgtr %r4,%r4 # struct compat_itimerspec *
|
|
llgtr %r5,%r5 # struct compat_itimerspec *
|
|
jg compat_sys_timer_settime
|
|
|
|
.globl sys32_timer_gettime_wrapper
|
|
sys32_timer_gettime_wrapper:
|
|
lgfr %r2,%r2 # timer_t (int)
|
|
llgtr %r3,%r3 # struct compat_itimerspec *
|
|
jg compat_sys_timer_gettime
|
|
|
|
.globl sys32_timer_getoverrun_wrapper
|
|
sys32_timer_getoverrun_wrapper:
|
|
lgfr %r2,%r2 # timer_t (int)
|
|
jg sys_timer_getoverrun
|
|
|
|
.globl sys32_timer_delete_wrapper
|
|
sys32_timer_delete_wrapper:
|
|
lgfr %r2,%r2 # timer_t (int)
|
|
jg sys_timer_delete
|
|
|
|
.globl sys32_io_setup_wrapper
|
|
sys32_io_setup_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # u32 *
|
|
jg compat_sys_io_setup
|
|
|
|
.globl sys32_io_destroy_wrapper
|
|
sys32_io_destroy_wrapper:
|
|
llgfr %r2,%r2 # (aio_context_t) u32
|
|
jg sys_io_destroy
|
|
|
|
.globl sys32_io_getevents_wrapper
|
|
sys32_io_getevents_wrapper:
|
|
llgfr %r2,%r2 # (aio_context_t) u32
|
|
lgfr %r3,%r3 # long
|
|
lgfr %r4,%r4 # long
|
|
llgtr %r5,%r5 # struct io_event *
|
|
llgtr %r6,%r6 # struct compat_timespec *
|
|
jg compat_sys_io_getevents
|
|
|
|
.globl sys32_io_submit_wrapper
|
|
sys32_io_submit_wrapper:
|
|
llgfr %r2,%r2 # (aio_context_t) u32
|
|
lgfr %r3,%r3 # long
|
|
llgtr %r4,%r4 # struct iocb **
|
|
jg compat_sys_io_submit
|
|
|
|
.globl sys32_io_cancel_wrapper
|
|
sys32_io_cancel_wrapper:
|
|
llgfr %r2,%r2 # (aio_context_t) u32
|
|
llgtr %r3,%r3 # struct iocb *
|
|
llgtr %r4,%r4 # struct io_event *
|
|
jg sys_io_cancel
|
|
|
|
.globl compat_sys_statfs64_wrapper
|
|
compat_sys_statfs64_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgfr %r3,%r3 # compat_size_t
|
|
llgtr %r4,%r4 # struct compat_statfs64 *
|
|
jg compat_sys_statfs64
|
|
|
|
.globl compat_sys_fstatfs64_wrapper
|
|
compat_sys_fstatfs64_wrapper:
|
|
llgfr %r2,%r2 # unsigned int fd
|
|
llgfr %r3,%r3 # compat_size_t
|
|
llgtr %r4,%r4 # struct compat_statfs64 *
|
|
jg compat_sys_fstatfs64
|
|
|
|
.globl compat_sys_mq_open_wrapper
|
|
compat_sys_mq_open_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
lgfr %r3,%r3 # int
|
|
llgfr %r4,%r4 # mode_t
|
|
llgtr %r5,%r5 # struct compat_mq_attr *
|
|
jg compat_sys_mq_open
|
|
|
|
.globl sys32_mq_unlink_wrapper
|
|
sys32_mq_unlink_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
jg sys_mq_unlink
|
|
|
|
.globl compat_sys_mq_timedsend_wrapper
|
|
compat_sys_mq_timedsend_wrapper:
|
|
lgfr %r2,%r2 # mqd_t
|
|
llgtr %r3,%r3 # const char *
|
|
llgfr %r4,%r4 # size_t
|
|
llgfr %r5,%r5 # unsigned int
|
|
llgtr %r6,%r6 # const struct compat_timespec *
|
|
jg compat_sys_mq_timedsend
|
|
|
|
.globl compat_sys_mq_timedreceive_wrapper
|
|
compat_sys_mq_timedreceive_wrapper:
|
|
lgfr %r2,%r2 # mqd_t
|
|
llgtr %r3,%r3 # char *
|
|
llgfr %r4,%r4 # size_t
|
|
llgtr %r5,%r5 # unsigned int *
|
|
llgtr %r6,%r6 # const struct compat_timespec *
|
|
jg compat_sys_mq_timedreceive
|
|
|
|
.globl compat_sys_mq_notify_wrapper
|
|
compat_sys_mq_notify_wrapper:
|
|
lgfr %r2,%r2 # mqd_t
|
|
llgtr %r3,%r3 # struct compat_sigevent *
|
|
jg compat_sys_mq_notify
|
|
|
|
.globl compat_sys_mq_getsetattr_wrapper
|
|
compat_sys_mq_getsetattr_wrapper:
|
|
lgfr %r2,%r2 # mqd_t
|
|
llgtr %r3,%r3 # struct compat_mq_attr *
|
|
llgtr %r4,%r4 # struct compat_mq_attr *
|
|
jg compat_sys_mq_getsetattr
|
|
|
|
.globl compat_sys_add_key_wrapper
|
|
compat_sys_add_key_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgtr %r3,%r3 # const char *
|
|
llgtr %r4,%r4 # const void *
|
|
llgfr %r5,%r5 # size_t
|
|
llgfr %r6,%r6 # (key_serial_t) u32
|
|
jg sys_add_key
|
|
|
|
.globl compat_sys_request_key_wrapper
|
|
compat_sys_request_key_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
llgtr %r3,%r3 # const char *
|
|
llgtr %r4,%r4 # const void *
|
|
llgfr %r5,%r5 # (key_serial_t) u32
|
|
jg sys_request_key
|
|
|
|
.globl sys32_remap_file_pages_wrapper
|
|
sys32_remap_file_pages_wrapper:
|
|
llgfr %r2,%r2 # unsigned long
|
|
llgfr %r3,%r3 # unsigned long
|
|
llgfr %r4,%r4 # unsigned long
|
|
llgfr %r5,%r5 # unsigned long
|
|
llgfr %r6,%r6 # unsigned long
|
|
jg sys_remap_file_pages
|
|
|
|
.globl compat_sys_waitid_wrapper
|
|
compat_sys_waitid_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
lgfr %r3,%r3 # pid_t
|
|
llgtr %r4,%r4 # siginfo_emu31_t *
|
|
lgfr %r5,%r5 # int
|
|
llgtr %r6,%r6 # struct rusage_emu31 *
|
|
jg compat_sys_waitid
|
|
|
|
.globl compat_sys_kexec_load_wrapper
|
|
compat_sys_kexec_load_wrapper:
|
|
llgfr %r2,%r2 # unsigned long
|
|
llgfr %r3,%r3 # unsigned long
|
|
llgtr %r4,%r4 # struct kexec_segment *
|
|
llgfr %r5,%r5 # unsigned long
|
|
jg compat_sys_kexec_load
|
|
|
|
.globl sys_ioprio_set_wrapper
|
|
sys_ioprio_set_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
lgfr %r3,%r3 # int
|
|
lgfr %r4,%r4 # int
|
|
jg sys_ioprio_set
|
|
|
|
.globl sys_ioprio_get_wrapper
|
|
sys_ioprio_get_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
lgfr %r3,%r3 # int
|
|
jg sys_ioprio_get
|
|
|
|
.globl sys_inotify_add_watch_wrapper
|
|
sys_inotify_add_watch_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # const char *
|
|
llgfr %r4,%r4 # u32
|
|
jg sys_inotify_add_watch
|
|
|
|
.globl sys_inotify_rm_watch_wrapper
|
|
sys_inotify_rm_watch_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgfr %r3,%r3 # u32
|
|
jg sys_inotify_rm_watch
|
|
|
|
.globl compat_sys_openat_wrapper
|
|
compat_sys_openat_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # const char *
|
|
lgfr %r4,%r4 # int
|
|
lgfr %r5,%r5 # int
|
|
jg compat_sys_openat
|
|
|
|
.globl sys_mkdirat_wrapper
|
|
sys_mkdirat_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # const char *
|
|
lgfr %r4,%r4 # int
|
|
jg sys_mkdirat
|
|
|
|
.globl sys_mknodat_wrapper
|
|
sys_mknodat_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # const char *
|
|
lgfr %r4,%r4 # int
|
|
llgfr %r5,%r5 # unsigned int
|
|
jg sys_mknodat
|
|
|
|
.globl sys_fchownat_wrapper
|
|
sys_fchownat_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # const char *
|
|
llgfr %r4,%r4 # uid_t
|
|
llgfr %r5,%r5 # gid_t
|
|
lgfr %r6,%r6 # int
|
|
jg sys_fchownat
|
|
|
|
.globl compat_sys_futimesat_wrapper
|
|
compat_sys_futimesat_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # char *
|
|
llgtr %r4,%r4 # struct timeval *
|
|
jg compat_sys_futimesat
|
|
|
|
.globl sys32_fstatat64_wrapper
|
|
sys32_fstatat64_wrapper:
|
|
llgfr %r2,%r2 # unsigned int
|
|
llgtr %r3,%r3 # char *
|
|
llgtr %r4,%r4 # struct stat64 *
|
|
lgfr %r5,%r5 # int
|
|
jg sys32_fstatat64
|
|
|
|
.globl sys_unlinkat_wrapper
|
|
sys_unlinkat_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # const char *
|
|
lgfr %r4,%r4 # int
|
|
jg sys_unlinkat
|
|
|
|
.globl sys_renameat_wrapper
|
|
sys_renameat_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # const char *
|
|
lgfr %r4,%r4 # int
|
|
llgtr %r5,%r5 # const char *
|
|
jg sys_renameat
|
|
|
|
.globl sys_linkat_wrapper
|
|
sys_linkat_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # const char *
|
|
lgfr %r4,%r4 # int
|
|
llgtr %r5,%r5 # const char *
|
|
lgfr %r6,%r6 # int
|
|
jg sys_linkat
|
|
|
|
.globl sys_symlinkat_wrapper
|
|
sys_symlinkat_wrapper:
|
|
llgtr %r2,%r2 # const char *
|
|
lgfr %r3,%r3 # int
|
|
llgtr %r4,%r4 # const char *
|
|
jg sys_symlinkat
|
|
|
|
.globl sys_readlinkat_wrapper
|
|
sys_readlinkat_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # const char *
|
|
llgtr %r4,%r4 # char *
|
|
lgfr %r5,%r5 # int
|
|
jg sys_readlinkat
|
|
|
|
.globl sys_fchmodat_wrapper
|
|
sys_fchmodat_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # const char *
|
|
llgfr %r4,%r4 # mode_t
|
|
jg sys_fchmodat
|
|
|
|
.globl sys_faccessat_wrapper
|
|
sys_faccessat_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # const char *
|
|
lgfr %r4,%r4 # int
|
|
jg sys_faccessat
|
|
|
|
.globl compat_sys_pselect6_wrapper
|
|
compat_sys_pselect6_wrapper:
|
|
lgfr %r2,%r2 # int
|
|
llgtr %r3,%r3 # fd_set *
|
|
llgtr %r4,%r4 # fd_set *
|
|
llgtr %r5,%r5 # fd_set *
|
|
llgtr %r6,%r6 # struct timespec *
|
|
llgt %r0,164(%r15) # void *
|
|
stg %r0,160(%r15)
|
|
jg compat_sys_pselect6
|
|
|
|
.globl compat_sys_ppoll_wrapper
|
|
compat_sys_ppoll_wrapper:
|
|
llgtr %r2,%r2 # struct pollfd *
|
|
llgfr %r3,%r3 # unsigned int
|
|
llgtr %r4,%r4 # struct timespec *
|
|
llgtr %r5,%r5 # const sigset_t *
|
|
llgfr %r6,%r6 # size_t
|
|
jg compat_sys_ppoll
|
|
|
|
.globl sys_unshare_wrapper
|
|
sys_unshare_wrapper:
|
|
llgfr %r2,%r2 # unsigned long
|
|
jg sys_unshare
|