]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blob - arch/x86/include/asm/ia32.h
x32: Switch to a 64-bit clock_t
[mirror_ubuntu-zesty-kernel.git] / arch / x86 / include / asm / ia32.h
1 #ifndef _ASM_X86_IA32_H
2 #define _ASM_X86_IA32_H
3
4
5 #ifdef CONFIG_IA32_EMULATION
6
7 #include <linux/compat.h>
8
9 /*
10 * 32 bit structures for IA32 support.
11 */
12
13 #include <asm/sigcontext32.h>
14
15 /* signal.h */
16 struct sigaction32 {
17 unsigned int sa_handler; /* Really a pointer, but need to deal
18 with 32 bits */
19 unsigned int sa_flags;
20 unsigned int sa_restorer; /* Another 32 bit pointer */
21 compat_sigset_t sa_mask; /* A 32 bit mask */
22 };
23
24 struct old_sigaction32 {
25 unsigned int sa_handler; /* Really a pointer, but need to deal
26 with 32 bits */
27 compat_old_sigset_t sa_mask; /* A 32 bit mask */
28 unsigned int sa_flags;
29 unsigned int sa_restorer; /* Another 32 bit pointer */
30 };
31
32 typedef struct sigaltstack_ia32 {
33 unsigned int ss_sp;
34 int ss_flags;
35 unsigned int ss_size;
36 } stack_ia32_t;
37
38 struct ucontext_ia32 {
39 unsigned int uc_flags;
40 unsigned int uc_link;
41 stack_ia32_t uc_stack;
42 struct sigcontext_ia32 uc_mcontext;
43 compat_sigset_t uc_sigmask; /* mask last for extensibility */
44 };
45
46 struct ucontext_x32 {
47 unsigned int uc_flags;
48 unsigned int uc_link;
49 stack_ia32_t uc_stack;
50 unsigned int uc__pad0; /* needed for alignment */
51 struct sigcontext uc_mcontext; /* the 64-bit sigcontext type */
52 compat_sigset_t uc_sigmask; /* mask last for extensibility */
53 };
54
55 /* This matches struct stat64 in glibc2.2, hence the absolutely
56 * insane amounts of padding around dev_t's.
57 */
58 struct stat64 {
59 unsigned long long st_dev;
60 unsigned char __pad0[4];
61
62 #define STAT64_HAS_BROKEN_ST_INO 1
63 unsigned int __st_ino;
64
65 unsigned int st_mode;
66 unsigned int st_nlink;
67
68 unsigned int st_uid;
69 unsigned int st_gid;
70
71 unsigned long long st_rdev;
72 unsigned char __pad3[4];
73
74 long long st_size;
75 unsigned int st_blksize;
76
77 long long st_blocks;/* Number 512-byte blocks allocated */
78
79 unsigned st_atime;
80 unsigned st_atime_nsec;
81 unsigned st_mtime;
82 unsigned st_mtime_nsec;
83 unsigned st_ctime;
84 unsigned st_ctime_nsec;
85
86 unsigned long long st_ino;
87 } __attribute__((packed));
88
89 typedef struct compat_siginfo {
90 int si_signo;
91 int si_errno;
92 int si_code;
93
94 union {
95 int _pad[((128 / sizeof(int)) - 3)];
96
97 /* kill() */
98 struct {
99 unsigned int _pid; /* sender's pid */
100 unsigned int _uid; /* sender's uid */
101 } _kill;
102
103 /* POSIX.1b timers */
104 struct {
105 compat_timer_t _tid; /* timer id */
106 int _overrun; /* overrun count */
107 compat_sigval_t _sigval; /* same as below */
108 int _sys_private; /* not to be passed to user */
109 int _overrun_incr; /* amount to add to overrun */
110 } _timer;
111
112 /* POSIX.1b signals */
113 struct {
114 unsigned int _pid; /* sender's pid */
115 unsigned int _uid; /* sender's uid */
116 compat_sigval_t _sigval;
117 } _rt;
118
119 /* SIGCHLD */
120 struct {
121 unsigned int _pid; /* which child */
122 unsigned int _uid; /* sender's uid */
123 int _status; /* exit code */
124 compat_clock_t _utime;
125 compat_clock_t _stime;
126 } _sigchld;
127
128 /* SIGCHLD (x32 version) */
129 struct {
130 unsigned int _pid; /* which child */
131 unsigned int _uid; /* sender's uid */
132 int _status; /* exit code */
133 s64 _utime;
134 s64 _stime;
135 } _sigchld_x32;
136
137 /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
138 struct {
139 unsigned int _addr; /* faulting insn/memory ref. */
140 } _sigfault;
141
142 /* SIGPOLL */
143 struct {
144 int _band; /* POLL_IN, POLL_OUT, POLL_MSG */
145 int _fd;
146 } _sigpoll;
147 } _sifields;
148 } compat_siginfo_t;
149
150 #define IA32_STACK_TOP IA32_PAGE_OFFSET
151
152 #ifdef __KERNEL__
153 struct linux_binprm;
154 extern int ia32_setup_arg_pages(struct linux_binprm *bprm,
155 unsigned long stack_top, int exec_stack);
156 struct mm_struct;
157 extern void ia32_pick_mmap_layout(struct mm_struct *mm);
158
159 #endif
160
161 #endif /* !CONFIG_IA32_SUPPORT */
162
163 #endif /* _ASM_X86_IA32_H */