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#define __compat_uid_t  __compat_uid_t
  13typedef u16             __compat_uid_t;
  14typedef u16             __compat_gid_t;
  15
  16#define compat_dev_t    compat_dev_t
  17typedef u16             compat_dev_t;
  18
  19#define compat_ipc_pid_t compat_ipc_pid_t
  20typedef u16              compat_ipc_pid_t;
  21
  22#define compat_ipc64_perm compat_ipc64_perm
  23
  24#define COMPAT_RLIM_INFINITY 0x7fffffff
  25
  26#include <asm-generic/compat.h>
  27
  28#define COMPAT_UTS_MACHINE      "sparc\0\0"
  29
  30typedef s16             compat_nlink_t;
  31
  32struct compat_stat {
  33        compat_dev_t    st_dev;
  34        compat_ino_t    st_ino;
  35        compat_mode_t   st_mode;
  36        compat_nlink_t  st_nlink;
  37        __compat_uid_t  st_uid;
  38        __compat_gid_t  st_gid;
  39        compat_dev_t    st_rdev;
  40        compat_off_t    st_size;
  41        old_time32_t    st_atime;
  42        compat_ulong_t  st_atime_nsec;
  43        old_time32_t    st_mtime;
  44        compat_ulong_t  st_mtime_nsec;
  45        old_time32_t    st_ctime;
  46        compat_ulong_t  st_ctime_nsec;
  47        compat_off_t    st_blksize;
  48        compat_off_t    st_blocks;
  49        u32             __unused4[2];
  50};
  51
  52struct compat_stat64 {
  53        unsigned long long      st_dev;
  54
  55        unsigned long long      st_ino;
  56
  57        unsigned int    st_mode;
  58        unsigned int    st_nlink;
  59
  60        unsigned int    st_uid;
  61        unsigned int    st_gid;
  62
  63        unsigned long long      st_rdev;
  64
  65        unsigned char   __pad3[8];
  66
  67        long long       st_size;
  68        unsigned int    st_blksize;
  69
  70        unsigned char   __pad4[8];
  71        unsigned int    st_blocks;
  72
  73        unsigned int    st_atime;
  74        unsigned int    st_atime_nsec;
  75
  76        unsigned int    st_mtime;
  77        unsigned int    st_mtime_nsec;
  78
  79        unsigned int    st_ctime;
  80        unsigned int    st_ctime_nsec;
  81
  82        unsigned int    __unused4;
  83        unsigned int    __unused5;
  84};
  85
  86#define __ARCH_COMPAT_FLOCK_PAD         short __unused;
  87
  88struct compat_ipc64_perm {
  89        compat_key_t key;
  90        __compat_uid32_t uid;
  91        __compat_gid32_t gid;
  92        __compat_uid32_t cuid;
  93        __compat_gid32_t cgid;
  94        unsigned short __pad1;
  95        compat_mode_t mode;
  96        unsigned short __pad2;
  97        unsigned short seq;
  98        unsigned long __unused1;        /* yes they really are 64bit pads */
  99        unsigned long __unused2;
 100};
 101
 102struct compat_semid64_ds {
 103        struct compat_ipc64_perm sem_perm;
 104        unsigned int    sem_otime_high;
 105        unsigned int    sem_otime;
 106        unsigned int    sem_ctime_high;
 107        unsigned int    sem_ctime;
 108        u32             sem_nsems;
 109        u32             __unused1;
 110        u32             __unused2;
 111};
 112
 113struct compat_msqid64_ds {
 114        struct compat_ipc64_perm msg_perm;
 115        unsigned int    msg_stime_high;
 116        unsigned int    msg_stime;
 117        unsigned int    msg_rtime_high;
 118        unsigned int    msg_rtime;
 119        unsigned int    msg_ctime_high;
 120        unsigned int    msg_ctime;
 121        unsigned int    msg_cbytes;
 122        unsigned int    msg_qnum;
 123        unsigned int    msg_qbytes;
 124        compat_pid_t    msg_lspid;
 125        compat_pid_t    msg_lrpid;
 126        unsigned int    __unused1;
 127        unsigned int    __unused2;
 128};
 129
 130struct compat_shmid64_ds {
 131        struct compat_ipc64_perm shm_perm;
 132        unsigned int    shm_atime_high;
 133        unsigned int    shm_atime;
 134        unsigned int    shm_dtime_high;
 135        unsigned int    shm_dtime;
 136        unsigned int    shm_ctime_high;
 137        unsigned int    shm_ctime;
 138        compat_size_t   shm_segsz;
 139        compat_pid_t    shm_cpid;
 140        compat_pid_t    shm_lpid;
 141        unsigned int    shm_nattch;
 142        unsigned int    __unused1;
 143        unsigned int    __unused2;
 144};
 145
 146#ifdef CONFIG_COMPAT
 147static inline int is_compat_task(void)
 148{
 149        return test_thread_flag(TIF_32BIT);
 150}
 151
 152static inline bool in_compat_syscall(void)
 153{
 154        /* Vector 0x110 is LINUX_32BIT_SYSCALL_TRAP */
 155        return pt_regs_trap_type(current_pt_regs()) == 0x110;
 156}
 157#define in_compat_syscall in_compat_syscall
 158#endif
 159
 160#endif /* _ASM_SPARC64_COMPAT_H */
 161