2018-03-26 17:59:15 +03:00
/* SPDX-License-Identifier: GPL-2.0 */
2018-04-18 23:01:26 +03:00
# ifndef __ASM_GENERIC_COMPAT_H
# define __ASM_GENERIC_COMPAT_H
2018-03-26 17:59:15 +03:00
2022-04-05 10:13:00 +03:00
# 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
2022-09-21 09:55:49 +03:00
# ifndef compat_arg_u64
2022-10-31 16:23:13 +03:00
# ifndef CONFIG_CPU_BIG_ENDIAN
2022-04-05 10:13:05 +03:00
# define compat_arg_u64(name) u32 name##_lo, u32 name##_hi
# define compat_arg_u64_dual(name) u32, name##_lo, u32, name##_hi
2022-09-21 09:55:49 +03:00
# 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
2022-04-05 10:13:05 +03:00
# define compat_arg_u64_glue(name) (((u64)name##_lo & 0xffffffffUL) | \
( ( u64 ) name # # _hi < < 32 ) )
2022-09-21 09:55:49 +03:00
# endif /* compat_arg_u64 */
2022-04-05 10:13:05 +03:00
2018-04-18 23:01:26 +03:00
/* 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 ;
2021-07-22 17:28:58 +03:00
typedef u32 compat_caddr_t ;
2018-04-18 23:01:26 +03:00
typedef u32 compat_aio_context_t ;
2021-07-22 17:28:58 +03:00
typedef u32 compat_old_sigset_t ;
2022-04-05 10:13:00 +03:00
# ifndef __compat_uid_t
typedef u32 __compat_uid_t ;
typedef u32 __compat_gid_t ;
# endif
2021-07-22 17:28:58 +03:00
# 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
2018-04-18 23:01:26 +03:00
2020-09-17 10:41:57 +03:00
# 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
2021-07-22 17:28:58 +03:00
# ifndef _COMPAT_NSIG
typedef u32 compat_sigset_word ;
# define _COMPAT_NSIG _NSIG
# define _COMPAT_NSIG_BPW 32
# endif
2022-04-05 10:13:00 +03:00
# 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
2018-04-18 23:01:26 +03:00
# endif