linux/include/asm-x86_64/ia32.h
<<
>>
Prefs
   1#ifndef _ASM_X86_64_IA32_H
   2#define _ASM_X86_64_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 */
  16struct 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
  24struct 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
  32typedef struct sigaltstack_ia32 {
  33        unsigned int    ss_sp;
  34        int             ss_flags;
  35        unsigned int    ss_size;
  36} stack_ia32_t;
  37
  38struct 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 */
  49struct 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
  80typedef 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
 132struct sigframe32
 133{
 134        u32 pretcode;
 135        int sig;
 136        struct sigcontext_ia32 sc;
 137        struct _fpstate_ia32 fpstate;
 138        unsigned int extramask[_COMPAT_NSIG_WORDS-1];
 139};
 140
 141struct rt_sigframe32
 142{
 143        u32 pretcode;
 144        int sig;
 145        u32 pinfo;
 146        u32 puc;
 147        compat_siginfo_t info;
 148        struct ucontext_ia32 uc;
 149        struct _fpstate_ia32 fpstate;
 150};
 151
 152struct ustat32 {
 153        __u32   f_tfree;
 154        compat_ino_t            f_tinode;
 155        char                    f_fname[6];
 156        char                    f_fpack[6];
 157};
 158
 159#define IA32_STACK_TOP IA32_PAGE_OFFSET
 160
 161#ifdef __KERNEL__
 162struct user_desc;
 163struct siginfo_t;
 164int do_get_thread_area(struct thread_struct *t, struct user_desc __user *info);
 165int do_set_thread_area(struct thread_struct *t, struct user_desc __user *info);
 166int ia32_child_tls(struct task_struct *p, struct pt_regs *childregs);
 167
 168struct linux_binprm;
 169extern int ia32_setup_arg_pages(struct linux_binprm *bprm,
 170                                unsigned long stack_top, int exec_stack);
 171struct mm_struct;
 172extern void ia32_pick_mmap_layout(struct mm_struct *mm);
 173
 174#endif
 175
 176#endif /* !CONFIG_IA32_SUPPORT */
 177 
 178#endif 
 179
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.