Viewing file: svr4.h (2.84 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 _SPARC64_SVR4_H #define _SPARC64_SVR4_H
/* Signals as used by svr4 */ typedef struct { /* signal set type */ uint 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 { u32 rwin_lo[8]; u32 rwin_in[8]; } svr4_rwindow_t;
typedef struct { int count; u32 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 { u64 fpu_regs[32]; u32 fp_q; u32 fp_fsr; u_char fp_nqel; u_char fp_nqsize; u_char inuse; /* if fpu is in use */ } svr4_fregset_t;
typedef struct { u32 id; /* if this holds "xrs" string => ptr is valid */ u32 ptr; } svr4_xrs_t;
/* Machine dependent context */ typedef struct { svr4_gregset_t greg; /* registers 0..19 (see top) */ u32 gwin; /* may point to register windows */ svr4_fregset_t freg; /* floating point registers */ svr4_xrs_t xrs; /* mhm? */ int pad[19]; } svr4_mcontext_t;
/* flags for stack_t.flags */ enum svr4_stack_flags { SVR4_SS_ONSTACK, SVR4_SS_DISABLE, };
/* signal stack execution place, unsupported */ typedef struct svr4_stack_t { u32 sp; int size; int flags; } svr4_stack_t;
/* Context used by getcontext and setcontext */ typedef struct svr4_ucontext_t { u32 flags; /* context flags, indicate what is loaded */ u32 link; svr4_sigset_t sigmask; svr4_stack_t stack; svr4_mcontext_t mcontext; int 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 */
|