^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef _ASM_S390X_COMPAT_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define _ASM_S390X_COMPAT_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Architecture specific compatibility types
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <linux/sched.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <linux/sched/task_stack.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/thread_info.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include <asm-generic/compat.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #define __TYPE_IS_PTR(t) (!__builtin_types_compatible_p( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) typeof(0?(__force t)0:0ULL), u64))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define __SC_DELOUSE(t,v) ({ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) BUILD_BUG_ON(sizeof(t) > 4 && !__TYPE_IS_PTR(t)); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) (__force t)(__TYPE_IS_PTR(t) ? ((v) & 0x7fffffff) : (v)); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define PSW32_MASK_PER 0x40000000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define PSW32_MASK_DAT 0x04000000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define PSW32_MASK_IO 0x02000000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define PSW32_MASK_EXT 0x01000000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define PSW32_MASK_KEY 0x00F00000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define PSW32_MASK_BASE 0x00080000UL /* Always one */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define PSW32_MASK_MCHECK 0x00040000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define PSW32_MASK_WAIT 0x00020000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #define PSW32_MASK_PSTATE 0x00010000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define PSW32_MASK_ASC 0x0000C000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define PSW32_MASK_CC 0x00003000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define PSW32_MASK_PM 0x00000f00UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define PSW32_MASK_RI 0x00000080UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #define PSW32_MASK_USER 0x0000FF00UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define PSW32_ADDR_AMODE 0x80000000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #define PSW32_ADDR_INSN 0x7FFFFFFFUL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) #define PSW32_DEFAULT_KEY (((u32) PAGE_DEFAULT_ACC) << 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #define PSW32_ASC_PRIMARY 0x00000000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) #define PSW32_ASC_ACCREG 0x00004000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) #define PSW32_ASC_SECONDARY 0x00008000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) #define PSW32_ASC_HOME 0x0000C000UL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) #define PSW32_USER_BITS (PSW32_MASK_DAT | PSW32_MASK_IO | PSW32_MASK_EXT | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) PSW32_DEFAULT_KEY | PSW32_MASK_BASE | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) PSW32_MASK_MCHECK | PSW32_MASK_PSTATE | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) PSW32_ASC_PRIMARY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #define COMPAT_USER_HZ 100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #define COMPAT_UTS_MACHINE "s390\0\0\0\0"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) typedef u16 __compat_uid_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) typedef u16 __compat_gid_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) typedef u32 __compat_uid32_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) typedef u32 __compat_gid32_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) typedef u16 compat_mode_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) typedef u16 compat_dev_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) typedef u16 compat_nlink_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) typedef u16 compat_ipc_pid_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) typedef u32 compat_caddr_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) typedef __kernel_fsid_t compat_fsid_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) typedef struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) u32 mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) u32 addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) } __aligned(8) psw_compat_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) typedef struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) psw_compat_t psw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) u32 gprs[NUM_GPRS];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) u32 acrs[NUM_ACRS];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) u32 orig_gpr2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) } s390_compat_regs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) typedef struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) u32 gprs_high[NUM_GPRS];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) } s390_compat_regs_high;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) struct compat_stat {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) compat_dev_t st_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) u16 __pad1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) compat_ino_t st_ino;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) compat_mode_t st_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) compat_nlink_t st_nlink;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) __compat_uid_t st_uid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) __compat_gid_t st_gid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) compat_dev_t st_rdev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) u16 __pad2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) u32 st_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) u32 st_blksize;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) u32 st_blocks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) u32 st_atime;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) u32 st_atime_nsec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) u32 st_mtime;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) u32 st_mtime_nsec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) u32 st_ctime;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) u32 st_ctime_nsec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) u32 __unused4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) u32 __unused5;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) struct compat_flock {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) short l_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) short l_whence;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) compat_off_t l_start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) compat_off_t l_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) compat_pid_t l_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define F_GETLK64 12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define F_SETLK64 13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) #define F_SETLKW64 14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) struct compat_flock64 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) short l_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) short l_whence;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) compat_loff_t l_start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) compat_loff_t l_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) compat_pid_t l_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) struct compat_statfs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) u32 f_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) u32 f_bsize;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) u32 f_blocks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) u32 f_bfree;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) u32 f_bavail;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) u32 f_files;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) u32 f_ffree;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) compat_fsid_t f_fsid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) u32 f_namelen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) u32 f_frsize;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) u32 f_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) u32 f_spare[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) struct compat_statfs64 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) u32 f_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) u32 f_bsize;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) u64 f_blocks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) u64 f_bfree;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) u64 f_bavail;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) u64 f_files;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) u64 f_ffree;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) compat_fsid_t f_fsid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) u32 f_namelen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) u32 f_frsize;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) u32 f_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) u32 f_spare[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) #define COMPAT_RLIM_INFINITY 0xffffffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) typedef u32 compat_old_sigset_t; /* at least 32 bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) #define _COMPAT_NSIG 64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) #define _COMPAT_NSIG_BPW 32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) typedef u32 compat_sigset_word;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) #define COMPAT_OFF_T_MAX 0x7fffffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) * A pointer passed in from user mode. This should not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) * be used for syscall parameters, just declare them
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) * as pointers because the syscall entry code will have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) * appropriately converted them already.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) static inline void __user *compat_ptr(compat_uptr_t uptr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) return (void __user *)(unsigned long)(uptr & 0x7fffffffUL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) #define compat_ptr(uptr) compat_ptr(uptr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) #ifdef CONFIG_COMPAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) static inline int is_compat_task(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) return test_thread_flag(TIF_31BIT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) static inline void __user *arch_compat_alloc_user_space(long len)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) unsigned long stack;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) stack = KSTK_ESP(current);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) if (is_compat_task())
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) stack &= 0x7fffffffUL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) return (void __user *) (stack - len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) struct compat_ipc64_perm {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) compat_key_t key;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) __compat_uid32_t uid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) __compat_gid32_t gid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) __compat_uid32_t cuid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) __compat_gid32_t cgid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) compat_mode_t mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) unsigned short __pad1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) unsigned short seq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) unsigned short __pad2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) unsigned int __unused1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) unsigned int __unused2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) struct compat_semid64_ds {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) struct compat_ipc64_perm sem_perm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) compat_ulong_t sem_otime;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) compat_ulong_t sem_otime_high;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) compat_ulong_t sem_ctime;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) compat_ulong_t sem_ctime_high;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) compat_ulong_t sem_nsems;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) compat_ulong_t __unused1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) compat_ulong_t __unused2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) struct compat_msqid64_ds {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) struct compat_ipc64_perm msg_perm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) compat_ulong_t msg_stime;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) compat_ulong_t msg_stime_high;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) compat_ulong_t msg_rtime;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) compat_ulong_t msg_rtime_high;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) compat_ulong_t msg_ctime;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) compat_ulong_t msg_ctime_high;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) compat_ulong_t msg_cbytes;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) compat_ulong_t msg_qnum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) compat_ulong_t msg_qbytes;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) compat_pid_t msg_lspid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) compat_pid_t msg_lrpid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) compat_ulong_t __unused1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) compat_ulong_t __unused2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) struct compat_shmid64_ds {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) struct compat_ipc64_perm shm_perm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) compat_size_t shm_segsz;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) compat_ulong_t shm_atime;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) compat_ulong_t shm_atime_high;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) compat_ulong_t shm_dtime;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) compat_ulong_t shm_dtime_high;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) compat_ulong_t shm_ctime;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) compat_ulong_t shm_ctime_high;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) compat_pid_t shm_cpid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) compat_pid_t shm_lpid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) compat_ulong_t shm_nattch;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) compat_ulong_t __unused1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) compat_ulong_t __unused2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) #endif /* _ASM_S390X_COMPAT_H */