Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/parisc/include/asm/compat.h
10819 views
1
#ifndef _ASM_PARISC_COMPAT_H
2
#define _ASM_PARISC_COMPAT_H
3
/*
4
* Architecture specific compatibility types
5
*/
6
#include <linux/types.h>
7
#include <linux/sched.h>
8
#include <linux/thread_info.h>
9
10
#define COMPAT_USER_HZ 100
11
#define COMPAT_UTS_MACHINE "parisc\0\0"
12
13
typedef u32 compat_size_t;
14
typedef s32 compat_ssize_t;
15
typedef s32 compat_time_t;
16
typedef s32 compat_clock_t;
17
typedef s32 compat_pid_t;
18
typedef u32 __compat_uid_t;
19
typedef u32 __compat_gid_t;
20
typedef u32 __compat_uid32_t;
21
typedef u32 __compat_gid32_t;
22
typedef u16 compat_mode_t;
23
typedef u32 compat_ino_t;
24
typedef u32 compat_dev_t;
25
typedef s32 compat_off_t;
26
typedef s64 compat_loff_t;
27
typedef u16 compat_nlink_t;
28
typedef u16 compat_ipc_pid_t;
29
typedef s32 compat_daddr_t;
30
typedef u32 compat_caddr_t;
31
typedef s32 compat_timer_t;
32
33
typedef s32 compat_int_t;
34
typedef s32 compat_long_t;
35
typedef s64 compat_s64;
36
typedef u32 compat_uint_t;
37
typedef u32 compat_ulong_t;
38
typedef u64 compat_u64;
39
40
struct compat_timespec {
41
compat_time_t tv_sec;
42
s32 tv_nsec;
43
};
44
45
struct compat_timeval {
46
compat_time_t tv_sec;
47
s32 tv_usec;
48
};
49
50
struct compat_stat {
51
compat_dev_t st_dev; /* dev_t is 32 bits on parisc */
52
compat_ino_t st_ino; /* 32 bits */
53
compat_mode_t st_mode; /* 16 bits */
54
compat_nlink_t st_nlink; /* 16 bits */
55
u16 st_reserved1; /* old st_uid */
56
u16 st_reserved2; /* old st_gid */
57
compat_dev_t st_rdev;
58
compat_off_t st_size;
59
compat_time_t st_atime;
60
u32 st_atime_nsec;
61
compat_time_t st_mtime;
62
u32 st_mtime_nsec;
63
compat_time_t st_ctime;
64
u32 st_ctime_nsec;
65
s32 st_blksize;
66
s32 st_blocks;
67
u32 __unused1; /* ACL stuff */
68
compat_dev_t __unused2; /* network */
69
compat_ino_t __unused3; /* network */
70
u32 __unused4; /* cnodes */
71
u16 __unused5; /* netsite */
72
short st_fstype;
73
compat_dev_t st_realdev;
74
u16 st_basemode;
75
u16 st_spareshort;
76
__compat_uid32_t st_uid;
77
__compat_gid32_t st_gid;
78
u32 st_spare4[3];
79
};
80
81
struct compat_flock {
82
short l_type;
83
short l_whence;
84
compat_off_t l_start;
85
compat_off_t l_len;
86
compat_pid_t l_pid;
87
};
88
89
struct compat_flock64 {
90
short l_type;
91
short l_whence;
92
compat_loff_t l_start;
93
compat_loff_t l_len;
94
compat_pid_t l_pid;
95
};
96
97
struct compat_statfs {
98
s32 f_type;
99
s32 f_bsize;
100
s32 f_blocks;
101
s32 f_bfree;
102
s32 f_bavail;
103
s32 f_files;
104
s32 f_ffree;
105
__kernel_fsid_t f_fsid;
106
s32 f_namelen;
107
s32 f_frsize;
108
s32 f_spare[5];
109
};
110
111
struct compat_sigcontext {
112
compat_int_t sc_flags;
113
compat_int_t sc_gr[32]; /* PSW in sc_gr[0] */
114
u64 sc_fr[32];
115
compat_int_t sc_iasq[2];
116
compat_int_t sc_iaoq[2];
117
compat_int_t sc_sar; /* cr11 */
118
};
119
120
#define COMPAT_RLIM_INFINITY 0xffffffff
121
122
typedef u32 compat_old_sigset_t; /* at least 32 bits */
123
124
#define _COMPAT_NSIG 64
125
#define _COMPAT_NSIG_BPW 32
126
127
typedef u32 compat_sigset_word;
128
129
#define COMPAT_OFF_T_MAX 0x7fffffff
130
#define COMPAT_LOFF_T_MAX 0x7fffffffffffffffL
131
132
/*
133
* A pointer passed in from user mode. This should not
134
* be used for syscall parameters, just declare them
135
* as pointers because the syscall entry code will have
136
* appropriately converted them already.
137
*/
138
typedef u32 compat_uptr_t;
139
140
static inline void __user *compat_ptr(compat_uptr_t uptr)
141
{
142
return (void __user *)(unsigned long)uptr;
143
}
144
145
static inline compat_uptr_t ptr_to_compat(void __user *uptr)
146
{
147
return (u32)(unsigned long)uptr;
148
}
149
150
static __inline__ void __user *arch_compat_alloc_user_space(long len)
151
{
152
struct pt_regs *regs = &current->thread.regs;
153
return (void __user *)regs->gr[30];
154
}
155
156
static inline int __is_compat_task(struct task_struct *t)
157
{
158
return test_ti_thread_flag(task_thread_info(t), TIF_32BIT);
159
}
160
161
static inline int is_compat_task(void)
162
{
163
return __is_compat_task(current);
164
}
165
166
#endif /* _ASM_PARISC_COMPAT_H */
167
168