linux-old/arch/s390x/kernel/linux32.h
<<
>>
Prefs
   1#ifndef _ASM_S390X_S390_H
   2#define _ASM_S390X_S390_H
   3
   4#include <linux/config.h>
   5#include <linux/socket.h>
   6#include <linux/nfs_fs.h>
   7#include <linux/sunrpc/svc.h>
   8#include <linux/nfsd/nfsd.h>
   9#include <linux/nfsd/export.h>
  10
  11#ifdef CONFIG_S390_SUPPORT
  12
  13/* Macro that masks the high order bit of an 32 bit pointer and converts it*/
  14/*       to a 64 bit pointer */
  15#define A(__x) ((unsigned long)((__x) & 0x7FFFFFFFUL))
  16#define AA(__x)                         \
  17        ((unsigned long)(__x))
  18
  19/* Now 32bit compatibility types */
  20typedef unsigned int           __kernel_size_t32;
  21typedef int                    __kernel_ssize_t32;
  22typedef int                    __kernel_ptrdiff_t32;
  23typedef int                    __kernel_time_t32;
  24typedef int                    __kernel_clock_t32;
  25typedef int                    __kernel_pid_t32;
  26typedef unsigned short         __kernel_ipc_pid_t32;
  27typedef unsigned short         __kernel_uid_t32;
  28typedef unsigned short         __kernel_gid_t32;
  29typedef unsigned short         __kernel_dev_t32;
  30typedef unsigned int           __kernel_ino_t32;
  31typedef unsigned short         __kernel_mode_t32;
  32typedef unsigned short         __kernel_umode_t32;
  33typedef short                  __kernel_nlink_t32;
  34typedef int                    __kernel_daddr_t32;
  35typedef int                    __kernel_off_t32;
  36typedef unsigned int           __kernel_caddr_t32;
  37typedef long                   __kernel_loff_t32;
  38typedef __kernel_fsid_t        __kernel_fsid_t32;  
  39
  40struct ipc_kludge_32 {
  41        __u32   msgp;                           /* pointer              */
  42        __s32   msgtyp;
  43};
  44
  45#define F_GETLK64       12
  46#define F_SETLK64       13
  47#define F_SETLKW64      14    
  48
  49struct flock32 {
  50        short l_type;
  51        short l_whence;
  52        __kernel_off_t32 l_start;
  53        __kernel_off_t32 l_len;
  54        __kernel_pid_t32 l_pid;
  55        short __unused;
  56}; 
  57
  58struct stat32 {
  59        unsigned short  st_dev;
  60        unsigned short  __pad1;
  61        __u32           st_ino;
  62        unsigned short  st_mode;
  63        unsigned short  st_nlink;
  64        unsigned short  st_uid;
  65        unsigned short  st_gid;
  66        unsigned short  st_rdev;
  67        unsigned short  __pad2;
  68        __u32           st_size;
  69        __u32           st_blksize;
  70        __u32           st_blocks;
  71        __u32           st_atime;
  72        __u32           __unused1;
  73        __u32           st_mtime;
  74        __u32           __unused2;
  75        __u32           st_ctime;
  76        __u32           __unused3;
  77        __u32           __unused4;
  78        __u32           __unused5;
  79};
  80
  81struct statfs32 {
  82        __s32                   f_type;
  83        __s32                   f_bsize;
  84        __s32                   f_blocks;
  85        __s32                   f_bfree;
  86        __s32                   f_bavail;
  87        __s32                   f_files;
  88        __s32                   f_ffree;
  89        __kernel_fsid_t         f_fsid;
  90        __s32                   f_namelen;  
  91        __s32                   f_spare[6];
  92};
  93
  94typedef __u32 old_sigset_t32;       /* at least 32 bits */ 
  95
  96struct old_sigaction32 {
  97       __u32                    sa_handler;     /* Really a pointer, but need to deal with 32 bits */
  98       old_sigset_t32           sa_mask;        /* A 32 bit mask */
  99       __u32                    sa_flags;
 100       __u32                    sa_restorer;    /* Another 32 bit pointer */
 101};
 102 
 103#define _SIGCONTEXT_NSIG_WORDS32    2 
 104typedef struct {
 105        __u32   sig[_SIGCONTEXT_NSIG_WORDS32];
 106} sigset_t32;  
 107
 108typedef union sigval32 {
 109        int     sival_int;
 110        __u32   sival_ptr;
 111} sigval_t32;
 112                 
 113typedef struct siginfo32 {
 114        int     si_signo;
 115        int     si_errno;
 116        int     si_code;
 117
 118        union {
 119                int _pad[((128/sizeof(int)) - 3)];
 120
 121                /* kill() */
 122                struct {
 123                        pid_t   _pid;   /* sender's pid */
 124                        uid_t   _uid;   /* sender's uid */
 125                } _kill;
 126
 127                /* POSIX.1b timers */
 128                struct {
 129                        unsigned int    _timer1;
 130                        unsigned int    _timer2;
 131                
 132                } _timer;
 133
 134                /* POSIX.1b signals */
 135                struct {
 136                        pid_t                   _pid;   /* sender's pid */
 137                        uid_t                   _uid;   /* sender's uid */
 138                        sigval_t32              _sigval;
 139                } _rt;
 140
 141                /* SIGCHLD */
 142                struct {
 143                        pid_t                   _pid;   /* which child */
 144                        uid_t                   _uid;   /* sender's uid */
 145                        int                     _status;/* exit code */
 146                        __kernel_clock_t32      _utime;
 147                        __kernel_clock_t32      _stime;
 148                } _sigchld;
 149
 150                /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
 151                struct {
 152                        __u32   _addr;  /* faulting insn/memory ref. - pointer */
 153                } _sigfault;
 154                          
 155                /* SIGPOLL */
 156                struct {
 157                        int     _band;  /* POLL_IN, POLL_OUT, POLL_MSG */
 158                        int     _fd;
 159                } _sigpoll;
 160        } _sifields;
 161} siginfo_t32;  
 162
 163/*
 164 * How these fields are to be accessed.
 165 */
 166#define si_pid          _sifields._kill._pid
 167#define si_uid          _sifields._kill._uid
 168#define si_status       _sifields._sigchld._status
 169#define si_utime        _sifields._sigchld._utime
 170#define si_stime        _sifields._sigchld._stime
 171#define si_value        _sifields._rt._sigval
 172#define si_int          _sifields._rt._sigval.sival_int
 173#define si_ptr          _sifields._rt._sigval.sival_ptr
 174#define si_addr         _sifields._sigfault._addr
 175#define si_band         _sifields._sigpoll._band
 176#define si_fd           _sifields._sigpoll._fd    
 177
 178/* asm/sigcontext.h */
 179typedef union
 180{
 181        __u64   d;
 182        __u32   f; 
 183} freg_t32;
 184
 185typedef struct
 186{
 187        unsigned int    fpc;
 188        freg_t32        fprs[__NUM_FPRS];              
 189} _s390_fp_regs32;
 190
 191typedef struct 
 192{
 193        __u32   mask;
 194        __u32   addr;
 195} _psw_t32 __attribute__ ((aligned(8)));
 196
 197typedef struct
 198{
 199        _psw_t32        psw;
 200        __u32           gprs[__NUM_GPRS];
 201        __u32           acrs[__NUM_ACRS];
 202} _s390_regs_common32;
 203
 204typedef struct
 205{
 206        _s390_regs_common32 regs;
 207        _s390_fp_regs32     fpregs;
 208} _sigregs32;
 209
 210#define _SIGCONTEXT_NSIG32      64
 211#define _SIGCONTEXT_NSIG_BPW32  32
 212#define __SIGNAL_FRAMESIZE32    96
 213#define _SIGMASK_COPY_SIZE32    (sizeof(u32)*2)
 214
 215struct sigcontext32
 216{
 217        __u32   oldmask[_SIGCONTEXT_NSIG_WORDS32];
 218        __u32   sregs;                          /* pointer */
 219};
 220
 221/* asm/signal.h */
 222struct sigaction32 {
 223        __u32           sa_handler;             /* pointer */
 224        __u32           sa_flags;
 225        __u32           sa_restorer;            /* pointer */
 226        sigset_t32      sa_mask;        /* mask last for extensibility */
 227};
 228
 229typedef struct {
 230        __u32                   ss_sp;          /* pointer */
 231        int                     ss_flags;
 232        __kernel_size_t32       ss_size;
 233} stack_t32;
 234
 235/* asm/ucontext.h */
 236struct ucontext32 {
 237        __u32                   uc_flags;
 238        __u32                   uc_link;        /* pointer */   
 239        stack_t32               uc_stack;
 240        _sigregs32              uc_mcontext;
 241        sigset_t32              uc_sigmask;     /* mask last for extensibility */
 242};
 243
 244#endif /* !CONFIG_S390_SUPPORT */
 245 
 246#endif /* _ASM_S390X_S390_H */
 247
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.