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