~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to arch/x86/include/asm/ia32.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
/* This matches struct stat64 in glibc2.2, hence the absolutely
 
47
 * insane amounts of padding around dev_t's.
 
48
 */
 
49
struct stat64 {
 
50
        unsigned long long      st_dev;
 
51
        unsigned char           __pad0[4];
 
52
 
 
53
#define STAT64_HAS_BROKEN_ST_INO        1
 
54
        unsigned int            __st_ino;
 
55
 
 
56
        unsigned int            st_mode;
 
57
        unsigned int            st_nlink;
 
58
 
 
59
        unsigned int            st_uid;
 
60
        unsigned int            st_gid;
 
61
 
 
62
        unsigned long long      st_rdev;
 
63
        unsigned char           __pad3[4];
 
64
 
 
65
        long long               st_size;
 
66
        unsigned int            st_blksize;
 
67
 
 
68
        long long               st_blocks;/* Number 512-byte blocks allocated */
 
69
 
 
70
        unsigned                st_atime;
 
71
        unsigned                st_atime_nsec;
 
72
        unsigned                st_mtime;
 
73
        unsigned                st_mtime_nsec;
 
74
        unsigned                st_ctime;
 
75
        unsigned                st_ctime_nsec;
 
76
 
 
77
        unsigned long long      st_ino;
 
78
} __attribute__((packed));
 
79
 
 
80
typedef struct compat_siginfo {
 
81
        int si_signo;
 
82
        int si_errno;
 
83
        int si_code;
 
84
 
 
85
        union {
 
86
                int _pad[((128 / sizeof(int)) - 3)];
 
87
 
 
88
                /* kill() */
 
89
                struct {
 
90
                        unsigned int _pid;      /* sender's pid */
 
91
                        unsigned int _uid;      /* sender's uid */
 
92
                } _kill;
 
93
 
 
94
                /* POSIX.1b timers */
 
95
                struct {
 
96
                        compat_timer_t _tid;    /* timer id */
 
97
                        int _overrun;           /* overrun count */
 
98
                        compat_sigval_t _sigval;        /* same as below */
 
99
                        int _sys_private;       /* not to be passed to user */
 
100
                        int _overrun_incr;      /* amount to add to overrun */
 
101
                } _timer;
 
102
 
 
103
                /* POSIX.1b signals */
 
104
                struct {
 
105
                        unsigned int _pid;      /* sender's pid */
 
106
                        unsigned int _uid;      /* sender's uid */
 
107
                        compat_sigval_t _sigval;
 
108
                } _rt;
 
109
 
 
110
                /* SIGCHLD */
 
111
                struct {
 
112
                        unsigned int _pid;      /* which child */
 
113
                        unsigned int _uid;      /* sender's uid */
 
114
                        int _status;            /* exit code */
 
115
                        compat_clock_t _utime;
 
116
                        compat_clock_t _stime;
 
117
                } _sigchld;
 
118
 
 
119
                /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
 
120
                struct {
 
121
                        unsigned int _addr;     /* faulting insn/memory ref. */
 
122
                } _sigfault;
 
123
 
 
124
                /* SIGPOLL */
 
125
                struct {
 
126
                        int _band;      /* POLL_IN, POLL_OUT, POLL_MSG */
 
127
                        int _fd;
 
128
                } _sigpoll;
 
129
        } _sifields;
 
130
} compat_siginfo_t;
 
131
 
 
132
#define IA32_STACK_TOP IA32_PAGE_OFFSET
 
133
 
 
134
#ifdef __KERNEL__
 
135
struct linux_binprm;
 
136
extern int ia32_setup_arg_pages(struct linux_binprm *bprm,
 
137
                                unsigned long stack_top, int exec_stack);
 
138
struct mm_struct;
 
139
extern void ia32_pick_mmap_layout(struct mm_struct *mm);
 
140
 
 
141
#endif
 
142
 
 
143
#endif /* !CONFIG_IA32_SUPPORT */
 
144
 
 
145
#endif /* _ASM_X86_IA32_H */