Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | /* 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 *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 *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 *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 */ |