linux/arch/mips/include/asm/compat.h
<<
>>
Prefs
   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 */
 159