~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/sparc/include/asm/compat.h

Version: ~ [ linux-5.7 ] ~ [ linux-5.6.15 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.43 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.125 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.182 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.225 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.225 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.84 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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 #include <asm-generic/compat.h>
 10 
 11 #define COMPAT_USER_HZ          100
 12 #define COMPAT_UTS_MACHINE      "sparc\0\0"
 13 
 14 typedef u16             __compat_uid_t;
 15 typedef u16             __compat_gid_t;
 16 typedef u32             __compat_uid32_t;
 17 typedef u32             __compat_gid32_t;
 18 typedef u16             compat_mode_t;
 19 typedef u16             compat_dev_t;
 20 typedef s16             compat_nlink_t;
 21 typedef u16             compat_ipc_pid_t;
 22 typedef u32             compat_caddr_t;
 23 typedef __kernel_fsid_t compat_fsid_t;
 24 typedef s64             compat_s64;
 25 typedef u64             compat_u64;
 26 struct compat_stat {
 27         compat_dev_t    st_dev;
 28         compat_ino_t    st_ino;
 29         compat_mode_t   st_mode;
 30         compat_nlink_t  st_nlink;
 31         __compat_uid_t  st_uid;
 32         __compat_gid_t  st_gid;
 33         compat_dev_t    st_rdev;
 34         compat_off_t    st_size;
 35         old_time32_t    st_atime;
 36         compat_ulong_t  st_atime_nsec;
 37         old_time32_t    st_mtime;
 38         compat_ulong_t  st_mtime_nsec;
 39         old_time32_t    st_ctime;
 40         compat_ulong_t  st_ctime_nsec;
 41         compat_off_t    st_blksize;
 42         compat_off_t    st_blocks;
 43         u32             __unused4[2];
 44 };
 45 
 46 struct compat_stat64 {
 47         unsigned long long      st_dev;
 48 
 49         unsigned long long      st_ino;
 50 
 51         unsigned int    st_mode;
 52         unsigned int    st_nlink;
 53 
 54         unsigned int    st_uid;
 55         unsigned int    st_gid;
 56 
 57         unsigned long long      st_rdev;
 58 
 59         unsigned char   __pad3[8];
 60 
 61         long long       st_size;
 62         unsigned int    st_blksize;
 63 
 64         unsigned char   __pad4[8];
 65         unsigned int    st_blocks;
 66 
 67         unsigned int    st_atime;
 68         unsigned int    st_atime_nsec;
 69 
 70         unsigned int    st_mtime;
 71         unsigned int    st_mtime_nsec;
 72 
 73         unsigned int    st_ctime;
 74         unsigned int    st_ctime_nsec;
 75 
 76         unsigned int    __unused4;
 77         unsigned int    __unused5;
 78 };
 79 
 80 struct compat_flock {
 81         short           l_type;
 82         short           l_whence;
 83         compat_off_t    l_start;
 84         compat_off_t    l_len;
 85         compat_pid_t    l_pid;
 86         short           __unused;
 87 };
 88 
 89 #define F_GETLK64       12
 90 #define F_SETLK64       13
 91 #define F_SETLKW64      14
 92 
 93 struct compat_flock64 {
 94         short           l_type;
 95         short           l_whence;
 96         compat_loff_t   l_start;
 97         compat_loff_t   l_len;
 98         compat_pid_t    l_pid;
 99         short           __unused;
100 };
101 
102 struct compat_statfs {
103         int             f_type;
104         int             f_bsize;
105         int             f_blocks;
106         int             f_bfree;
107         int             f_bavail;
108         int             f_files;
109         int             f_ffree;
110         compat_fsid_t   f_fsid;
111         int             f_namelen;      /* SunOS ignores this field. */
112         int             f_frsize;
113         int             f_flags;
114         int             f_spare[4];
115 };
116 
117 #define COMPAT_RLIM_INFINITY 0x7fffffff
118 
119 typedef u32             compat_old_sigset_t;
120 
121 #define _COMPAT_NSIG            64
122 #define _COMPAT_NSIG_BPW        32
123 
124 typedef u32             compat_sigset_word;
125 
126 #define COMPAT_OFF_T_MAX        0x7fffffff
127 
128 /*
129  * A pointer passed in from user mode. This should not
130  * be used for syscall parameters, just declare them
131  * as pointers because the syscall entry code will have
132  * appropriately converted them already.
133  */
134 
135 static inline void __user *compat_ptr(compat_uptr_t uptr)
136 {
137         return (void __user *)(unsigned long)uptr;
138 }
139 
140 static inline compat_uptr_t ptr_to_compat(void __user *uptr)
141 {
142         return (u32)(unsigned long)uptr;
143 }
144 
145 #ifdef CONFIG_COMPAT
146 static inline void __user *arch_compat_alloc_user_space(long len)
147 {
148         struct pt_regs *regs = current_thread_info()->kregs;
149         unsigned long usp = regs->u_regs[UREG_I6];
150 
151         if (test_thread_64bit_stack(usp))
152                 usp += STACK_BIAS;
153 
154         if (test_thread_flag(TIF_32BIT))
155                 usp &= 0xffffffffUL;
156 
157         usp -= len;
158         usp &= ~0x7UL;
159 
160         return (void __user *) usp;
161 }
162 #endif
163 
164 struct compat_ipc64_perm {
165         compat_key_t key;
166         __compat_uid32_t uid;
167         __compat_gid32_t gid;
168         __compat_uid32_t cuid;
169         __compat_gid32_t cgid;
170         unsigned short __pad1;
171         compat_mode_t mode;
172         unsigned short __pad2;
173         unsigned short seq;
174         unsigned long __unused1;        /* yes they really are 64bit pads */
175         unsigned long __unused2;
176 };
177 
178 struct compat_semid64_ds {
179         struct compat_ipc64_perm sem_perm;
180         unsigned int    sem_otime_high;
181         unsigned int    sem_otime;
182         unsigned int    sem_ctime_high;
183         unsigned int    sem_ctime;
184         u32             sem_nsems;
185         u32             __unused1;
186         u32             __unused2;
187 };
188 
189 struct compat_msqid64_ds {
190         struct compat_ipc64_perm msg_perm;
191         unsigned int    msg_stime_high;
192         unsigned int    msg_stime;
193         unsigned int    msg_rtime_high;
194         unsigned int    msg_rtime;
195         unsigned int    msg_ctime_high;
196         unsigned int    msg_ctime;
197         unsigned int    msg_cbytes;
198         unsigned int    msg_qnum;
199         unsigned int    msg_qbytes;
200         compat_pid_t    msg_lspid;
201         compat_pid_t    msg_lrpid;
202         unsigned int    __unused1;
203         unsigned int    __unused2;
204 };
205 
206 struct compat_shmid64_ds {
207         struct compat_ipc64_perm shm_perm;
208         unsigned int    shm_atime_high;
209         unsigned int    shm_atime;
210         unsigned int    shm_dtime_high;
211         unsigned int    shm_dtime;
212         unsigned int    shm_ctime_high;
213         unsigned int    shm_ctime;
214         compat_size_t   shm_segsz;
215         compat_pid_t    shm_cpid;
216         compat_pid_t    shm_lpid;
217         unsigned int    shm_nattch;
218         unsigned int    __unused1;
219         unsigned int    __unused2;
220 };
221 
222 #ifdef CONFIG_COMPAT
223 static inline int is_compat_task(void)
224 {
225         return test_thread_flag(TIF_32BIT);
226 }
227 
228 static inline bool in_compat_syscall(void)
229 {
230         /* Vector 0x110 is LINUX_32BIT_SYSCALL_TRAP */
231         return pt_regs_trap_type(current_pt_regs()) == 0x110;
232 }
233 #define in_compat_syscall in_compat_syscall
234 #endif
235 
236 #endif /* _ASM_SPARC64_COMPAT_H */
237 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp