Linux Audio

Check our new training course

Loading...
  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 */