| /* SPDX-License-Identifier: GPL-2.0 */ | |
| #ifndef __ASM_GENERIC_COMPAT_H | |
| #define __ASM_GENERIC_COMPAT_H | |
| #ifndef COMPAT_USER_HZ | |
| #define COMPAT_USER_HZ 100 | |
| #endif | |
| #ifndef COMPAT_RLIM_INFINITY | |
| #define COMPAT_RLIM_INFINITY 0xffffffff | |
| #endif | |
| #ifndef COMPAT_OFF_T_MAX | |
| #define COMPAT_OFF_T_MAX 0x7fffffff | |
| #endif | |
| #ifndef compat_arg_u64 | |
| #ifndef CONFIG_CPU_BIG_ENDIAN | |
| #define compat_arg_u64(name) u32 name##_lo, u32 name##_hi | |
| #define compat_arg_u64_dual(name) u32, name##_lo, u32, name##_hi | |
| #else | |
| #define compat_arg_u64(name) u32 name##_hi, u32 name##_lo | |
| #define compat_arg_u64_dual(name) u32, name##_hi, u32, name##_lo | |
| #endif | |
| #define compat_arg_u64_glue(name) (((u64)name##_lo & 0xffffffffUL) | \ | |
| ((u64)name##_hi << 32)) | |
| #endif /* compat_arg_u64 */ | |
| /* These types are common across all compat ABIs */ | |
| typedef u32 compat_size_t; | |
| typedef s32 compat_ssize_t; | |
| typedef s32 compat_clock_t; | |
| typedef s32 compat_pid_t; | |
| typedef u32 compat_ino_t; | |
| typedef s32 compat_off_t; | |
| typedef s64 compat_loff_t; | |
| typedef s32 compat_daddr_t; | |
| typedef s32 compat_timer_t; | |
| typedef s32 compat_key_t; | |
| typedef s16 compat_short_t; | |
| typedef s32 compat_int_t; | |
| typedef s32 compat_long_t; | |
| typedef u16 compat_ushort_t; | |
| typedef u32 compat_uint_t; | |
| typedef u32 compat_ulong_t; | |
| typedef u32 compat_uptr_t; | |
| typedef u32 compat_caddr_t; | |
| typedef u32 compat_aio_context_t; | |
| typedef u32 compat_old_sigset_t; | |
| #ifndef __compat_uid_t | |
| typedef u32 __compat_uid_t; | |
| typedef u32 __compat_gid_t; | |
| #endif | |
| #ifndef __compat_uid32_t | |
| typedef u32 __compat_uid32_t; | |
| typedef u32 __compat_gid32_t; | |
| #endif | |
| #ifndef compat_mode_t | |
| typedef u32 compat_mode_t; | |
| #endif | |
| #ifdef CONFIG_COMPAT_FOR_U64_ALIGNMENT | |
| typedef s64 __attribute__((aligned(4))) compat_s64; | |
| typedef u64 __attribute__((aligned(4))) compat_u64; | |
| #else | |
| typedef s64 compat_s64; | |
| typedef u64 compat_u64; | |
| #endif | |
| #ifndef _COMPAT_NSIG | |
| typedef u32 compat_sigset_word; | |
| #define _COMPAT_NSIG _NSIG | |
| #define _COMPAT_NSIG_BPW 32 | |
| #endif | |
| #ifndef compat_dev_t | |
| typedef u32 compat_dev_t; | |
| #endif | |
| #ifndef compat_ipc_pid_t | |
| typedef s32 compat_ipc_pid_t; | |
| #endif | |
| #ifndef compat_fsid_t | |
| typedef __kernel_fsid_t compat_fsid_t; | |
| #endif | |
| #ifndef compat_statfs | |
| struct compat_statfs { | |
| compat_int_t f_type; | |
| compat_int_t f_bsize; | |
| compat_int_t f_blocks; | |
| compat_int_t f_bfree; | |
| compat_int_t f_bavail; | |
| compat_int_t f_files; | |
| compat_int_t f_ffree; | |
| compat_fsid_t f_fsid; | |
| compat_int_t f_namelen; | |
| compat_int_t f_frsize; | |
| compat_int_t f_flags; | |
| compat_int_t f_spare[4]; | |
| }; | |
| #endif | |
| #ifndef compat_ipc64_perm | |
| struct compat_ipc64_perm { | |
| compat_key_t key; | |
| __compat_uid32_t uid; | |
| __compat_gid32_t gid; | |
| __compat_uid32_t cuid; | |
| __compat_gid32_t cgid; | |
| compat_mode_t mode; | |
| unsigned char __pad1[4 - sizeof(compat_mode_t)]; | |
| compat_ushort_t seq; | |
| compat_ushort_t __pad2; | |
| compat_ulong_t unused1; | |
| compat_ulong_t unused2; | |
| }; | |
| struct compat_semid64_ds { | |
| struct compat_ipc64_perm sem_perm; | |
| compat_ulong_t sem_otime; | |
| compat_ulong_t sem_otime_high; | |
| compat_ulong_t sem_ctime; | |
| compat_ulong_t sem_ctime_high; | |
| compat_ulong_t sem_nsems; | |
| compat_ulong_t __unused3; | |
| compat_ulong_t __unused4; | |
| }; | |
| struct compat_msqid64_ds { | |
| struct compat_ipc64_perm msg_perm; | |
| compat_ulong_t msg_stime; | |
| compat_ulong_t msg_stime_high; | |
| compat_ulong_t msg_rtime; | |
| compat_ulong_t msg_rtime_high; | |
| compat_ulong_t msg_ctime; | |
| compat_ulong_t msg_ctime_high; | |
| compat_ulong_t msg_cbytes; | |
| compat_ulong_t msg_qnum; | |
| compat_ulong_t msg_qbytes; | |
| compat_pid_t msg_lspid; | |
| compat_pid_t msg_lrpid; | |
| compat_ulong_t __unused4; | |
| compat_ulong_t __unused5; | |
| }; | |
| struct compat_shmid64_ds { | |
| struct compat_ipc64_perm shm_perm; | |
| compat_size_t shm_segsz; | |
| compat_ulong_t shm_atime; | |
| compat_ulong_t shm_atime_high; | |
| compat_ulong_t shm_dtime; | |
| compat_ulong_t shm_dtime_high; | |
| compat_ulong_t shm_ctime; | |
| compat_ulong_t shm_ctime_high; | |
| compat_pid_t shm_cpid; | |
| compat_pid_t shm_lpid; | |
| compat_ulong_t shm_nattch; | |
| compat_ulong_t __unused4; | |
| compat_ulong_t __unused5; | |
| }; | |
| #endif | |
| #endif |