Viewing file: svr4.h (2.95 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* Solaris/SPARC constants and definitions -- * (C) 1996 Miguel de Icaza * * This file is not meant to be included by user level applications * but the solaris syscall emulator */
#ifndef _SPARC_SVR4_H #define _SPARC_SVR4_H
/* Signals as used by svr4 */ typedef struct { /* signal set type */ ulong sigbits[4]; } svr4_sigset_t;
/* Values for siginfo.code */ #define SVR4_SINOINFO 32767 /* Siginfo, sucker expects bunch of information on those parameters */ typedef union { char total_size [128]; struct { int signo; int code; int error; union { } data; } siginfo; } svr4_siginfo_t;
/* Context definition */
/* Location of the user stored registers into a greg_t */ enum { SVR4_PSR, SVR4_PC, SVR4_NPC, SVR4_Y, SVR4_G1, SVR4_G2, SVR4_G3, SVR4_G4, SVR4_G5, SVR4_G6, SVR4_G7, SVR4_O0, SVR4_O1, SVR4_O2, SVR4_O3, SVR4_O4, SVR4_O5, SVR4_O6, SVR4_O7 };
/* sizeof (regs) / sizeof (greg_t), defined in the ABI */ #define SVR4_NREGS 19 #define SVR4_MAXWIN 31
typedef struct { uint rwin_lo[8]; uint rwin_in[8]; } svr4_rwindow_t;
typedef struct { int count; int __user *winptr [SVR4_MAXWIN]; /* pointer to the windows */ svr4_rwindow_t win[SVR4_MAXWIN]; /* the windows */ } svr4_gwindows_t;
typedef int svr4_gregset_t[SVR4_NREGS];
typedef struct { double fpu_regs[32]; void *fp_q; unsigned fp_fsr; u_char fp_nqel; u_char fp_nqsize; u_char inuse; /* if fpu is in use */ } svr4_fregset_t;
typedef struct { uint id; /* if this holds "xrs" string => ptr is valid */ caddr_t ptr; } svr4_xrs_t;
/* Machine dependent context */ typedef struct { svr4_gregset_t greg; /* registers 0..19 (see top) */ svr4_gwindows_t __user *gwin; /* may point to register windows */ svr4_fregset_t freg; /* floating point registers */ svr4_xrs_t xrs; /* mhm? */ long pad[19]; } svr4_mcontext_t;
/* flags for stack_t.flags */ enum svr4_stack_flags { SVR4_SS_ONSTACK, SVR4_SS_DISABLE, };
/* signal stack exection place, unsupported */ typedef struct svr4_stack_t { char __user *sp; int size; int flags; } svr4_stack_t;
/* Context used by getcontext and setcontext */ typedef struct svr4_ucontext_t { u_long flags; /* context flags, indicate what is loaded */ struct svr4_ucontext *link; svr4_sigset_t sigmask; svr4_stack_t stack; svr4_mcontext_t mcontext; long pad[23]; } svr4_ucontext_t;
/* windows hold the windows as they were at signal time, * ucontext->mcontext holds a pointer to them. * addresses for uc and si are passed as parameters to svr4 signal * handler */
/* This is the signal frame that is passed to the signal handler */ typedef struct { svr4_gwindows_t gw; /* windows */ svr4_ucontext_t uc; /* machine context */ svr4_siginfo_t si; /* siginfo */ } svr4_signal_frame_t;
#define SVR4_SF_ALIGNED (((sizeof (svr4_signal_frame_t) + 7) & (~7)))
#endif /* include control */
|