compat.h (3528B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _ASM_COMPAT_H 3#define _ASM_COMPAT_H 4/* 5 * Architecture specific compatibility types 6 */ 7#include <linux/thread_info.h> 8#include <linux/types.h> 9#include <asm/page.h> 10#include <asm/ptrace.h> 11 12#define __compat_uid_t __compat_uid_t 13typedef s32 __compat_uid_t; 14typedef s32 __compat_gid_t; 15 16typedef __compat_uid_t __compat_uid32_t; 17typedef __compat_gid_t __compat_gid32_t; 18#define __compat_uid32_t __compat_uid32_t 19 20#define compat_statfs compat_statfs 21#define compat_ipc64_perm compat_ipc64_perm 22 23#define _COMPAT_NSIG 128 /* Don't ask !$@#% ... */ 24#define _COMPAT_NSIG_BPW 32 25typedef u32 compat_sigset_word; 26 27#define COMPAT_RLIM_INFINITY 0x7fffffffUL 28 29#include <asm-generic/compat.h> 30 31#define COMPAT_UTS_MACHINE "mips\0\0\0" 32 33typedef u32 compat_nlink_t; 34 35struct compat_stat { 36 compat_dev_t st_dev; 37 s32 st_pad1[3]; 38 compat_ino_t st_ino; 39 compat_mode_t st_mode; 40 compat_nlink_t st_nlink; 41 __compat_uid_t st_uid; 42 __compat_gid_t st_gid; 43 compat_dev_t st_rdev; 44 s32 st_pad2[2]; 45 compat_off_t st_size; 46 s32 st_pad3; 47 old_time32_t st_atime; 48 s32 st_atime_nsec; 49 old_time32_t st_mtime; 50 s32 st_mtime_nsec; 51 old_time32_t st_ctime; 52 s32 st_ctime_nsec; 53 s32 st_blksize; 54 s32 st_blocks; 55 s32 st_pad4[14]; 56}; 57 58#define __ARCH_COMPAT_FLOCK_EXTRA_SYSID s32 l_sysid; 59#define __ARCH_COMPAT_FLOCK_PAD s32 pad[4]; 60 61struct compat_statfs { 62 int f_type; 63 int f_bsize; 64 int f_frsize; 65 int f_blocks; 66 int f_bfree; 67 int f_files; 68 int f_ffree; 69 int f_bavail; 70 compat_fsid_t f_fsid; 71 int f_namelen; 72 int f_flags; 73 int f_spare[5]; 74}; 75 76struct compat_ipc64_perm { 77 compat_key_t key; 78 __compat_uid32_t uid; 79 __compat_gid32_t gid; 80 __compat_uid32_t cuid; 81 __compat_gid32_t cgid; 82 compat_mode_t mode; 83 unsigned short seq; 84 unsigned short __pad2; 85 compat_ulong_t __unused1; 86 compat_ulong_t __unused2; 87}; 88 89struct compat_semid64_ds { 90 struct compat_ipc64_perm sem_perm; 91 compat_ulong_t sem_otime; 92 compat_ulong_t sem_ctime; 93 compat_ulong_t sem_nsems; 94 compat_ulong_t sem_otime_high; 95 compat_ulong_t sem_ctime_high; 96}; 97 98struct compat_msqid64_ds { 99 struct compat_ipc64_perm msg_perm; 100#ifndef CONFIG_CPU_LITTLE_ENDIAN 101 compat_ulong_t msg_stime_high; 102#endif 103 compat_ulong_t msg_stime; 104#ifdef CONFIG_CPU_LITTLE_ENDIAN 105 compat_ulong_t msg_stime_high; 106#endif 107#ifndef CONFIG_CPU_LITTLE_ENDIAN 108 compat_ulong_t msg_rtime_high; 109#endif 110 compat_ulong_t msg_rtime; 111#ifdef CONFIG_CPU_LITTLE_ENDIAN 112 compat_ulong_t msg_rtime_high; 113#endif 114#ifndef CONFIG_CPU_LITTLE_ENDIAN 115 compat_ulong_t msg_ctime_high; 116#endif 117 compat_ulong_t msg_ctime; 118#ifdef CONFIG_CPU_LITTLE_ENDIAN 119 compat_ulong_t msg_ctime_high; 120#endif 121 compat_ulong_t msg_cbytes; 122 compat_ulong_t msg_qnum; 123 compat_ulong_t msg_qbytes; 124 compat_pid_t msg_lspid; 125 compat_pid_t msg_lrpid; 126 compat_ulong_t __unused4; 127 compat_ulong_t __unused5; 128}; 129 130struct compat_shmid64_ds { 131 struct compat_ipc64_perm shm_perm; 132 compat_size_t shm_segsz; 133 compat_ulong_t shm_atime; 134 compat_ulong_t shm_dtime; 135 compat_ulong_t shm_ctime; 136 compat_pid_t shm_cpid; 137 compat_pid_t shm_lpid; 138 compat_ulong_t shm_nattch; 139 compat_ushort_t shm_atime_high; 140 compat_ushort_t shm_dtime_high; 141 compat_ushort_t shm_ctime_high; 142 compat_ushort_t __unused2; 143}; 144 145/* MIPS has unusual order of fields in stack_t */ 146typedef struct compat_sigaltstack { 147 compat_uptr_t ss_sp; 148 compat_size_t ss_size; 149 int ss_flags; 150} compat_stack_t; 151#define compat_sigaltstack compat_sigaltstack 152 153static inline int is_compat_task(void) 154{ 155 return test_thread_flag(TIF_32BIT_ADDR); 156} 157 158#endif /* _ASM_COMPAT_H */