Commit c73e84f3 authored by Stephen Rothwell's avatar Stephen Rothwell Committed by Christoph Hellwig

[PATCH] eliminate __kernel_..._t32 from s390x

With Martin's blessing, here is the s390x syscall compatability stuff.
parent 0b978314
...@@ -92,6 +92,11 @@ config S390_SUPPORT ...@@ -92,6 +92,11 @@ config S390_SUPPORT
(and some other stuff like libraries and such) is needed for (and some other stuff like libraries and such) is needed for
executing 31 bit applications. It is safe to say "Y". executing 31 bit applications. It is safe to say "Y".
config COMPAT
bool
depends on S390_SUPPORT
default y
config BINFMT_ELF32 config BINFMT_ELF32
tristate "Kernel support for 31 bit ELF binaries" tristate "Kernel support for 31 bit ELF binaries"
depends on S390_SUPPORT depends on S390_SUPPORT
......
...@@ -115,14 +115,10 @@ typedef s390_regs32 elf_gregset_t; ...@@ -115,14 +115,10 @@ typedef s390_regs32 elf_gregset_t;
#include <linux/config.h> #include <linux/config.h>
#include <linux/elfcore.h> #include <linux/elfcore.h>
#include <linux/binfmts.h> #include <linux/binfmts.h>
#include <linux/compat.h>
int setup_arg_pages32(struct linux_binprm *bprm); int setup_arg_pages32(struct linux_binprm *bprm);
struct timeval32
{
int tv_sec, tv_usec;
};
#define elf_prstatus elf_prstatus32 #define elf_prstatus elf_prstatus32
struct elf_prstatus32 struct elf_prstatus32
{ {
...@@ -134,10 +130,10 @@ struct elf_prstatus32 ...@@ -134,10 +130,10 @@ struct elf_prstatus32
pid_t pr_ppid; pid_t pr_ppid;
pid_t pr_pgrp; pid_t pr_pgrp;
pid_t pr_sid; pid_t pr_sid;
struct timeval32 pr_utime; /* User time */ struct compat_timeval pr_utime; /* User time */
struct timeval32 pr_stime; /* System time */ struct compat_timeval pr_stime; /* System time */
struct timeval32 pr_cutime; /* Cumulative user time */ struct compat_timeval pr_cutime; /* Cumulative user time */
struct timeval32 pr_cstime; /* Cumulative system time */ struct compat_timeval pr_cstime; /* Cumulative system time */
elf_gregset_t pr_reg; /* GP registers */ elf_gregset_t pr_reg; /* GP registers */
int pr_fpvalid; /* True if math co-processor being used. */ int pr_fpvalid; /* True if math co-processor being used. */
}; };
......
...@@ -421,7 +421,7 @@ sys_call_table: ...@@ -421,7 +421,7 @@ sys_call_table:
.long SYSCALL(sys_alarm,sys32_alarm_wrapper) .long SYSCALL(sys_alarm,sys32_alarm_wrapper)
.long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* old fstat syscall */ .long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* old fstat syscall */
.long SYSCALL(sys_pause,sys32_pause) .long SYSCALL(sys_pause,sys32_pause)
.long SYSCALL(sys_utime,sys32_utime_wrapper) /* 30 */ .long SYSCALL(sys_utime,compat_sys_utime_wrapper) /* 30 */
.long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* old stty syscall */ .long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* old stty syscall */
.long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* old gtty syscall */ .long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* old gtty syscall */
.long SYSCALL(sys_access,sys32_access_wrapper) .long SYSCALL(sys_access,sys32_access_wrapper)
...@@ -434,7 +434,7 @@ sys_call_table: ...@@ -434,7 +434,7 @@ sys_call_table:
.long SYSCALL(sys_rmdir,sys32_rmdir_wrapper) /* 40 */ .long SYSCALL(sys_rmdir,sys32_rmdir_wrapper) /* 40 */
.long SYSCALL(sys_dup,sys32_dup_wrapper) .long SYSCALL(sys_dup,sys32_dup_wrapper)
.long SYSCALL(sys_pipe,sys32_pipe_wrapper) .long SYSCALL(sys_pipe,sys32_pipe_wrapper)
.long SYSCALL(sys_times,sys32_times_wrapper) .long SYSCALL(sys_times,compat_sys_times_wrapper)
.long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* old prof syscall */ .long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* old prof syscall */
.long SYSCALL(sys_brk,sys32_brk_wrapper) /* 45 */ .long SYSCALL(sys_brk,sys32_brk_wrapper) /* 45 */
.long SYSCALL(sys_ni_syscall,sys32_setgid16) /* old setgid16 syscall*/ .long SYSCALL(sys_ni_syscall,sys32_setgid16) /* old setgid16 syscall*/
...@@ -495,11 +495,11 @@ sys_call_table: ...@@ -495,11 +495,11 @@ sys_call_table:
.long SYSCALL(sys_ni_syscall,sys_ni_syscall) .long SYSCALL(sys_ni_syscall,sys_ni_syscall)
.long SYSCALL(sys_socketcall,sys32_socketcall_wrapper) .long SYSCALL(sys_socketcall,sys32_socketcall_wrapper)
.long SYSCALL(sys_syslog,sys32_syslog_wrapper) .long SYSCALL(sys_syslog,sys32_syslog_wrapper)
.long SYSCALL(sys_setitimer,sys32_setitimer_wrapper) .long SYSCALL(sys_setitimer,compat_sys_setitimer_wrapper)
.long SYSCALL(sys_getitimer,sys32_getitimer_wrapper) /* 105 */ .long SYSCALL(sys_getitimer,compat_sys_getitimer_wrapper) /* 105 */
.long SYSCALL(sys_newstat,sys32_newstat_wrapper) .long SYSCALL(sys_newstat,compat_sys_newstat_wrapper)
.long SYSCALL(sys_newlstat,sys32_newlstat_wrapper) .long SYSCALL(sys_newlstat,compat_sys_newlstat_wrapper)
.long SYSCALL(sys_newfstat,sys32_newfstat_wrapper) .long SYSCALL(sys_newfstat,compat_sys_newfstat_wrapper)
.long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* old uname syscall */ .long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* old uname syscall */
.long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* iopl for i386 */ .long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* iopl for i386 */
.long SYSCALL(sys_vhangup,sys_vhangup) .long SYSCALL(sys_vhangup,sys_vhangup)
...@@ -553,7 +553,7 @@ sys_call_table: ...@@ -553,7 +553,7 @@ sys_call_table:
.long SYSCALL(sys_sched_get_priority_max,sys32_sched_get_priority_max_wrapper) .long SYSCALL(sys_sched_get_priority_max,sys32_sched_get_priority_max_wrapper)
.long SYSCALL(sys_sched_get_priority_min,sys32_sched_get_priority_min_wrapper) .long SYSCALL(sys_sched_get_priority_min,sys32_sched_get_priority_min_wrapper)
.long SYSCALL(sys_sched_rr_get_interval,sys32_sched_rr_get_interval_wrapper) .long SYSCALL(sys_sched_rr_get_interval,sys32_sched_rr_get_interval_wrapper)
.long SYSCALL(sys_nanosleep,sys32_nanosleep_wrapper) .long SYSCALL(sys_nanosleep,compat_sys_nanosleep_wrapper)
.long SYSCALL(sys_mremap,sys32_mremap_wrapper) .long SYSCALL(sys_mremap,sys32_mremap_wrapper)
.long SYSCALL(sys_ni_syscall,sys32_setresuid16_wrapper) /* old setresuid16 syscall */ .long SYSCALL(sys_ni_syscall,sys32_setresuid16_wrapper) /* old setresuid16 syscall */
.long SYSCALL(sys_ni_syscall,sys32_getresuid16_wrapper) /* old getresuid16 syscall */ .long SYSCALL(sys_ni_syscall,sys32_getresuid16_wrapper) /* old getresuid16 syscall */
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
*/ */
#include <linux/types.h> #include <linux/types.h>
#include <linux/compat.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/sched.h> #include <linux/sched.h>
...@@ -70,11 +71,6 @@ static inline int hd_geometry_ioctl(unsigned int fd, unsigned int cmd, unsigned ...@@ -70,11 +71,6 @@ static inline int hd_geometry_ioctl(unsigned int fd, unsigned int cmd, unsigned
return ret; return ret;
} }
struct timeval32 {
int tv_sec;
int tv_usec;
};
#define EXT2_IOC32_GETFLAGS _IOR('f', 1, int) #define EXT2_IOC32_GETFLAGS _IOR('f', 1, int)
#define EXT2_IOC32_SETFLAGS _IOW('f', 2, int) #define EXT2_IOC32_SETFLAGS _IOW('f', 2, int)
#define EXT2_IOC32_GETVERSION _IOR('v', 1, int) #define EXT2_IOC32_GETVERSION _IOR('v', 1, int)
...@@ -383,9 +379,9 @@ static int do_ext2_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg) ...@@ -383,9 +379,9 @@ static int do_ext2_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
struct loop_info32 { struct loop_info32 {
int lo_number; /* ioctl r/o */ int lo_number; /* ioctl r/o */
__kernel_dev_t32 lo_device; /* ioctl r/o */ compat_dev_t lo_device; /* ioctl r/o */
unsigned int lo_inode; /* ioctl r/o */ unsigned int lo_inode; /* ioctl r/o */
__kernel_dev_t32 lo_rdevice; /* ioctl r/o */ compat_dev_t lo_rdevice; /* ioctl r/o */
int lo_offset; int lo_offset;
int lo_encrypt_type; int lo_encrypt_type;
int lo_encrypt_key_size; /* ioctl w/o */ int lo_encrypt_key_size; /* ioctl w/o */
......
This diff is collapsed.
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#define _ASM_S390X_S390_H #define _ASM_S390X_S390_H
#include <linux/config.h> #include <linux/config.h>
#include <linux/compat.h>
#include <linux/socket.h> #include <linux/socket.h>
#include <linux/nfs_fs.h> #include <linux/nfs_fs.h>
#include <linux/sunrpc/svc.h> #include <linux/sunrpc/svc.h>
...@@ -15,26 +16,6 @@ ...@@ -15,26 +16,6 @@
((unsigned long)(__x)) ((unsigned long)(__x))
/* Now 32bit compatibility types */ /* Now 32bit compatibility types */
typedef unsigned int __kernel_size_t32;
typedef int __kernel_ssize_t32;
typedef int __kernel_ptrdiff_t32;
typedef int __kernel_time_t32;
typedef int __kernel_clock_t32;
typedef int __kernel_pid_t32;
typedef unsigned short __kernel_ipc_pid_t32;
typedef unsigned short __kernel_uid_t32;
typedef unsigned short __kernel_gid_t32;
typedef unsigned short __kernel_dev_t32;
typedef unsigned int __kernel_ino_t32;
typedef unsigned short __kernel_mode_t32;
typedef unsigned short __kernel_umode_t32;
typedef short __kernel_nlink_t32;
typedef int __kernel_daddr_t32;
typedef int __kernel_off_t32;
typedef unsigned int __kernel_caddr_t32;
typedef long __kernel_loff_t32;
typedef __kernel_fsid_t __kernel_fsid_t32;
struct ipc_kludge_32 { struct ipc_kludge_32 {
__u32 msgp; /* pointer */ __u32 msgp; /* pointer */
__s32 msgtyp; __s32 msgtyp;
...@@ -47,35 +28,12 @@ struct ipc_kludge_32 { ...@@ -47,35 +28,12 @@ struct ipc_kludge_32 {
struct flock32 { struct flock32 {
short l_type; short l_type;
short l_whence; short l_whence;
__kernel_off_t32 l_start; compat_off_t l_start;
__kernel_off_t32 l_len; compat_off_t l_len;
__kernel_pid_t32 l_pid; compat_pid_t l_pid;
short __unused; short __unused;
}; };
struct stat32 {
unsigned short st_dev;
unsigned short __pad1;
__u32 st_ino;
unsigned short st_mode;
unsigned short st_nlink;
unsigned short st_uid;
unsigned short st_gid;
unsigned short st_rdev;
unsigned short __pad2;
__u32 st_size;
__u32 st_blksize;
__u32 st_blocks;
__u32 st_atime;
__u32 __unused1;
__u32 st_mtime;
__u32 __unused2;
__u32 st_ctime;
__u32 __unused3;
__u32 __unused4;
__u32 __unused5;
};
struct statfs32 { struct statfs32 {
__s32 f_type; __s32 f_type;
__s32 f_bsize; __s32 f_bsize;
...@@ -141,8 +99,8 @@ typedef struct siginfo32 { ...@@ -141,8 +99,8 @@ typedef struct siginfo32 {
pid_t _pid; /* which child */ pid_t _pid; /* which child */
uid_t _uid; /* sender's uid */ uid_t _uid; /* sender's uid */
int _status;/* exit code */ int _status;/* exit code */
__kernel_clock_t32 _utime; compat_clock_t _utime;
__kernel_clock_t32 _stime; compat_clock_t _stime;
} _sigchld; } _sigchld;
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
...@@ -253,7 +211,7 @@ struct sigaction32 { ...@@ -253,7 +211,7 @@ struct sigaction32 {
typedef struct { typedef struct {
__u32 ss_sp; /* pointer */ __u32 ss_sp; /* pointer */
int ss_flags; int ss_flags;
__kernel_size_t32 ss_size; compat_size_t ss_size;
} stack_t32; } stack_t32;
/* asm/ucontext.h */ /* asm/ucontext.h */
......
...@@ -130,11 +130,11 @@ sys32_alarm_wrapper: ...@@ -130,11 +130,11 @@ sys32_alarm_wrapper:
#sys32_pause_wrapper # void #sys32_pause_wrapper # void
.globl sys32_utime_wrapper .globl compat_sys_utime_wrapper
sys32_utime_wrapper: compat_sys_utime_wrapper:
llgtr %r2,%r2 # char * llgtr %r2,%r2 # char *
llgtr %r3,%r3 # struct utimbuf_emu31 * llgtr %r3,%r3 # struct compat_utimbuf *
jg sys32_utime # branch to system call jg compat_sys_utime # branch to system call
.globl sys32_access_wrapper .globl sys32_access_wrapper
sys32_access_wrapper: sys32_access_wrapper:
...@@ -182,10 +182,10 @@ sys32_pipe_wrapper: ...@@ -182,10 +182,10 @@ sys32_pipe_wrapper:
llgtr %r2,%r2 # u32 * llgtr %r2,%r2 # u32 *
jg sys_pipe # branch to system call jg sys_pipe # branch to system call
.globl sys32_times_wrapper .globl compat_sys_times_wrapper
sys32_times_wrapper: compat_sys_times_wrapper:
llgtr %r2,%r2 # struct tms_emu31 * llgtr %r2,%r2 # struct compat_tms *
jg sys32_times # branch to system call jg compat_sys_times # branch to system call
.globl sys32_brk_wrapper .globl sys32_brk_wrapper
sys32_brk_wrapper: sys32_brk_wrapper:
...@@ -465,36 +465,36 @@ sys32_syslog_wrapper: ...@@ -465,36 +465,36 @@ sys32_syslog_wrapper:
lgfr %r4,%r4 # int lgfr %r4,%r4 # int
jg sys_syslog # branch to system call jg sys_syslog # branch to system call
.globl sys32_setitimer_wrapper .globl compat_sys_setitimer_wrapper
sys32_setitimer_wrapper: compat_sys_setitimer_wrapper:
lgfr %r2,%r2 # int lgfr %r2,%r2 # int
llgtr %r3,%r3 # struct itimerval_emu31 * llgtr %r3,%r3 # struct itimerval_emu31 *
llgtr %r4,%r4 # struct itimerval_emu31 * llgtr %r4,%r4 # struct itimerval_emu31 *
jg sys32_setitimer # branch to system call jg compat_sys_setitimer # branch to system call
.globl sys32_getitimer_wrapper .globl compat_sys_getitimer_wrapper
sys32_getitimer_wrapper: compat_sys_getitimer_wrapper:
lgfr %r2,%r2 # int lgfr %r2,%r2 # int
llgtr %r3,%r3 # struct itimerval_emu31 * llgtr %r3,%r3 # struct itimerval_emu31 *
jg sys32_getitimer # branch to system call jg compat_sys_getitimer # branch to system call
.globl sys32_newstat_wrapper .globl compat_sys_newstat_wrapper
sys32_newstat_wrapper: compat_sys_newstat_wrapper:
llgtr %r2,%r2 # char * llgtr %r2,%r2 # char *
llgtr %r3,%r3 # struct stat_emu31 * llgtr %r3,%r3 # struct stat_emu31 *
jg sys32_newstat # branch to system call jg compat_sys_newstat # branch to system call
.globl sys32_newlstat_wrapper .globl compat_sys_newlstat_wrapper
sys32_newlstat_wrapper: compat_sys_newlstat_wrapper:
llgtr %r2,%r2 # char * llgtr %r2,%r2 # char *
llgtr %r3,%r3 # struct stat_emu31 * llgtr %r3,%r3 # struct stat_emu31 *
jg sys32_newlstat # branch to system call jg compat_sys_newlstat # branch to system call
.globl sys32_newfstat_wrapper .globl compat_sys_newfstat_wrapper
sys32_newfstat_wrapper: compat_sys_newfstat_wrapper:
llgfr %r2,%r2 # unsigned int llgfr %r2,%r2 # unsigned int
llgtr %r3,%r3 # struct stat_emu31 * llgtr %r3,%r3 # struct stat_emu31 *
jg sys32_newfstat # branch to system call jg compat_sys_newfstat # branch to system call
#sys32_vhangup_wrapper # void #sys32_vhangup_wrapper # void
...@@ -743,14 +743,14 @@ sys32_sched_get_priority_min_wrapper: ...@@ -743,14 +743,14 @@ sys32_sched_get_priority_min_wrapper:
.globl sys32_sched_rr_get_interval_wrapper .globl sys32_sched_rr_get_interval_wrapper
sys32_sched_rr_get_interval_wrapper: sys32_sched_rr_get_interval_wrapper:
lgfr %r2,%r2 # pid_t lgfr %r2,%r2 # pid_t
llgtr %r3,%r3 # struct timespec_emu31 * llgtr %r3,%r3 # struct compat_timespec *
jg sys32_sched_rr_get_interval # branch to system call jg sys32_sched_rr_get_interval # branch to system call
.globl sys32_nanosleep_wrapper .globl compat_sys_nanosleep_wrapper
sys32_nanosleep_wrapper: compat_sys_nanosleep_wrapper:
llgtr %r2,%r2 # struct timespec_emu31 * llgtr %r2,%r2 # struct compat_timespec *
llgtr %r3,%r3 # struct timespec_emu31 * llgtr %r3,%r3 # struct compat_timespec *
jg sys32_nanosleep # branch to system call jg compat_sys_nanosleep # branch to system call
.globl sys32_mremap_wrapper .globl sys32_mremap_wrapper
sys32_mremap_wrapper: sys32_mremap_wrapper:
...@@ -839,7 +839,7 @@ sys32_rt_sigpending_wrapper: ...@@ -839,7 +839,7 @@ sys32_rt_sigpending_wrapper:
sys32_rt_sigtimedwait_wrapper: sys32_rt_sigtimedwait_wrapper:
llgtr %r2,%r2 # const sigset_emu31_t * llgtr %r2,%r2 # const sigset_emu31_t *
llgtr %r3,%r3 # siginfo_emu31_t * llgtr %r3,%r3 # siginfo_emu31_t *
llgtr %r4,%r4 # const struct timespec_emu31 * llgtr %r4,%r4 # const struct compat_timespec *
llgfr %r5,%r5 # size_t llgfr %r5,%r5 # size_t
jg sys32_rt_sigtimedwait # branch to system call jg sys32_rt_sigtimedwait # branch to system call
......
#ifndef _ASM_S390X_COMPAT_H
#define _ASM_S390X_COMPAT_H
/*
* Architecture specific compatibility types
*/
#include <linux/types.h>
#define COMPAT_USER_HZ 100
typedef u32 compat_size_t;
typedef s32 compat_ssize_t;
typedef s32 compat_time_t;
typedef s32 compat_clock_t;
typedef s32 compat_pid_t;
typedef u16 compat_uid_t;
typedef u16 compat_gid_t;
typedef u16 compat_mode_t;
typedef u32 compat_ino_t;
typedef u16 compat_dev_t;
typedef s32 compat_off_t;
typedef s64 compat_loff_t;
typedef u16 compat_nlink_t;
typedef u16 compat_ipc_pid_t;
typedef s32 compat_daddr_t;
typedef u32 compat_caddr_t;
typedef __kernel_fsid_t compat_fsid_t;
struct compat_timespec {
compat_time_t tv_sec;
s32 tv_nsec;
};
struct compat_timeval {
compat_time_t tv_sec;
s32 tv_usec;
};
struct compat_stat {
compat_dev_t st_dev;
u16 __pad1;
compat_ino_t st_ino;
compat_mode_t st_mode;
compat_nlink_t st_nlink;
compat_uid_t st_uid;
compat_gid_t st_gid;
compat_dev_t st_rdev;
u16 __pad2;
u32 st_size;
u32 st_blksize;
u32 st_blocks;
u32 st_atime;
u32 __unused1;
u32 st_mtime;
u32 __unused2;
u32 st_ctime;
u32 __unused3;
u32 __unused4;
u32 __unused5;
};
#endif /* _ASM_S390X_COMPAT_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment