linux/arch/sparc/include/asm/compat.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _ASM_SPARC64_COMPAT_H
   3#define _ASM_SPARC64_COMPAT_H
   4/*
   5 * Architecture specific compatibility types
   6 */
   7#include <linux/types.h>
   8
   9#define compat_mode_t   compat_mode_t
  10typedef u16             compat_mode_t;
  11
  12#include <asm-generic/compat.h>
  13
  14#define COMPAT_USER_HZ          100
  15#define COMPAT_UTS_MACHINE      "sparc\0\0"
  16
  17typedef u16             __compat_uid_t;
  18typedef u16             __compat_gid_t;
  19typedef u16             compat_dev_t;
  20typedef s16             compat_nlink_t;
  21typedef u16             compat_ipc_pid_t;
  22typedef __kernel_fsid_t compat_fsid_t;
  23
  24struct compat_stat {
  25        compat_dev_t    st_dev;
  26        compat_ino_t    st_ino;
  27        compat_mode_t   st_mode;
  28        compat_nlink_t  st_nlink;
  29        __compat_uid_t  st_uid;
  30        __compat_gid_t  st_gid;
  31        compat_dev_t    st_rdev;
  32        compat_off_t    st_size;
  33        old_time32_t    st_atime;
  34        compat_ulong_t  st_atime_nsec;
  35        old_time32_t    st_mtime;
  36        compat_ulong_t  st_mtime_nsec;
  37        old_time32_t    st_ctime;
  38        compat_ulong_t  st_ctime_nsec;
  39        compat_off_t    st_blksize;
  40        compat_off_t    st_blocks;
  41        u32             __unused4[2];
  42};
  43
  44struct compat_stat64 {
  45        unsigned long long      st_dev;
  46
  47        unsigned long long      st_ino;
  48
  49        unsigned int    st_mode;
  50        unsigned int    st_nlink;
  51
  52        unsigned int    st_uid;
  53        unsigned int    st_gid;
  54
  55        unsigned long long      st_rdev;
  56
  57        unsigned char   __pad3[8];
  58
  59        long long       st_size;
  60        unsigned int    st_blksize;
  61
  62        unsigned char   __pad4[8];
  63        unsigned int    st_blocks;
  64
  65        unsigned int    st_atime;
  66        unsigned int    st_atime_nsec;
  67
  68        unsigned int    st_mtime;
  69        unsigned int    st_mtime_nsec;
  70
  71        unsigned int    st_ctime;
  72        unsigned int    st_ctime_nsec;
  73
  74        unsigned int    __unused4;
  75        unsigned int    __unused5;
  76};
  77
  78struct compat_flock {
  79        short           l_type;
  80        short           l_whence;
  81        compat_off_t    l_start;
  82        compat_off_t    l_len;
  83        compat_pid_t    l_pid;
  84        short           __unused;
  85};
  86
  87#define F_GETLK64       12
  88#define F_SETLK64       13
  89#define F_SETLKW64      14
  90
  91struct compat_flock64 {
  92        short           l_type;
  93        short           l_whence;
  94        compat_loff_t   l_start;
  95        compat_loff_t   l_len;
  96        compat_pid_t    l_pid;
  97        short           __unused;
  98};
  99
 100struct compat_statfs {
 101        int             f_type;
 102        int             f_bsize;
 103        int             f_blocks;
 104        int             f_bfree;
 105        int             f_bavail;
 106        int             f_files;
 107        int             f_ffree;
 108        compat_fsid_t   f_fsid;
 109        int             f_namelen;      /* SunOS ignores this field. */
 110        int             f_frsize;
 111        int             f_flags;
 112        int             f_spare[4];
 113};
 114
 115#define COMPAT_RLIM_INFINITY 0x7fffffff
 116
 117#define COMPAT_OFF_T_MAX        0x7fffffff
 118
 119struct compat_ipc64_perm {
 120        compat_key_t key;
 121        __compat_uid32_t uid;
 122        __compat_gid32_t gid;
 123        __compat_uid32_t cuid;
 124        __compat_gid32_t cgid;
 125        unsigned short __pad1;
 126        compat_mode_t mode;
 127        unsigned short __pad2;
 128        unsigned short seq;
 129        unsigned long __unused1;        /* yes they really are 64bit pads */
 130        unsigned long __unused2;
 131};
 132
 133struct compat_semid64_ds {
 134        struct compat_ipc64_perm sem_perm;
 135        unsigned int    sem_otime_high;
 136        unsigned int    sem_otime;
 137        unsigned int    sem_ctime_high;
 138        unsigned int    sem_ctime;
 139        u32             sem_nsems;
 140        u32             __unused1;
 141        u32             __unused2;
 142};
 143
 144struct compat_msqid64_ds {
 145        struct compat_ipc64_perm msg_perm;
 146        unsigned int    msg_stime_high;
 147        unsigned int    msg_stime;
 148        unsigned int    msg_rtime_high;
 149        unsigned int    msg_rtime;
 150        unsigned int    msg_ctime_high;
 151        unsigned int    msg_ctime;
 152        unsigned int    msg_cbytes;
 153        unsigned int    msg_qnum;
 154        unsigned int    msg_qbytes;
 155        compat_pid_t    msg_lspid;
 156        compat_pid_t    msg_lrpid;
 157        unsigned int    __unused1;
 158        unsigned int    __unused2;
 159};
 160
 161struct compat_shmid64_ds {
 162        struct compat_ipc64_perm shm_perm;
 163        unsigned int    shm_atime_high;
 164        unsigned int    shm_atime;
 165        unsigned int    shm_dtime_high;
 166        unsigned int    shm_dtime;
 167        unsigned int    shm_ctime_high;
 168        unsigned int    shm_ctime;
 169        compat_size_t   shm_segsz;
 170        compat_pid_t    shm_cpid;
 171        compat_pid_t    shm_lpid;
 172        unsigned int    shm_nattch;
 173        unsigned int    __unused1;
 174        unsigned int    __unused2;
 175};
 176
 177#ifdef CONFIG_COMPAT
 178static inline int is_compat_task(void)
 179{
 180        return test_thread_flag(TIF_32BIT);
 181}
 182
 183static inline bool in_compat_syscall(void)
 184{
 185        /* Vector 0x110 is LINUX_32BIT_SYSCALL_TRAP */
 186        return pt_regs_trap_type(current_pt_regs()) == 0x110;
 187}
 188#define in_compat_syscall in_compat_syscall
 189#endif
 190
 191#endif /* _ASM_SPARC64_COMPAT_H */
 192