Blame view

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

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
161
162
163
  #endif
  
  #endif /* !CONFIG_IA32_SUPPORT */
9bd734251   Joe Perches   include/asm-x86/i...
164
165
  
  #endif