home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-sparc / svr4.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.9 KB  |  120 lines

  1. /* Solaris/SPARC constants and definitions -- 
  2.  * (C) 1996 Miguel de Icaza
  3.  *
  4.  * This file is not meant to be included by user level applications
  5.  * but the solaris syscall emulator
  6.  */
  7.  
  8. #ifndef _SPARC_SVR4_H
  9. #define _SPARC_SVR4_H
  10.  
  11. /* Signals as used by svr4 */
  12. typedef struct {                /* signal set type */
  13.     ulong sigbits[4];
  14. } svr4_sigset_t;
  15.  
  16. /* Values for siginfo.code */
  17. #define SVR4_SINOINFO 32767
  18. /* Siginfo, sucker expects bunch of information on those parameters */
  19. typedef union {
  20.     char total_size [128];
  21.     struct {
  22.         int signo;
  23.         int code;
  24.         int error;
  25.         union {
  26.         } data; 
  27.     } siginfo;
  28. } svr4_siginfo_t;
  29.  
  30. /* Context definition */
  31.  
  32. /* Location of the user stored registers into a greg_t */
  33. enum {
  34.     SVR4_PSR, SVR4_PC, SVR4_NPC, SVR4_Y,
  35.     SVR4_G1,  SVR4_G2, SVR4_G3,  SVR4_G4,
  36.     SVR4_G5,  SVR4_G6, SVR4_G7,  SVR4_O0,
  37.     SVR4_O1,  SVR4_O2, SVR4_O3,  SVR4_O4,
  38.     SVR4_O5,  SVR4_O6, SVR4_O7
  39. };
  40.  
  41. /* sizeof (regs) / sizeof (greg_t), defined in the ABI */
  42. #define SVR4_NREGS  19
  43. #define SVR4_MAXWIN 31
  44.  
  45. typedef struct {
  46.     uint rwin_lo[8];
  47.     uint rwin_in[8];
  48. } svr4_rwindow_t;
  49.  
  50. typedef struct {
  51.     int            count;
  52.     int            __user *winptr [SVR4_MAXWIN]; /* pointer to the windows */
  53.     svr4_rwindow_t win[SVR4_MAXWIN];      /* the windows */
  54. } svr4_gwindows_t;
  55.  
  56. typedef int svr4_gregset_t[SVR4_NREGS];
  57.  
  58. typedef struct {
  59.     double   fpu_regs[32];
  60.     void     *fp_q;
  61.     unsigned fp_fsr;
  62.     u_char   fp_nqel;
  63.     u_char   fp_nqsize;
  64.     u_char   inuse;        /* if fpu is in use */
  65. } svr4_fregset_t;
  66.  
  67. typedef struct {
  68.     uint    id;        /* if this holds "xrs" string => ptr is valid */
  69.     caddr_t ptr;
  70. } svr4_xrs_t;
  71.  
  72. /* Machine dependent context */
  73. typedef struct {
  74.     svr4_gregset_t   greg;    /* registers 0..19 (see top) */
  75.     svr4_gwindows_t  __user *gwin;    /* may point to register windows */
  76.     svr4_fregset_t   freg;    /* floating point registers */
  77.     svr4_xrs_t       xrs;    /* mhm? */
  78.     long             pad[19];
  79. } svr4_mcontext_t;
  80.  
  81. /* flags for stack_t.flags */
  82. enum svr4_stack_flags {
  83.     SVR4_SS_ONSTACK,
  84.     SVR4_SS_DISABLE,
  85. };
  86.  
  87. /* signal stack exection place, unsupported */
  88. typedef struct svr4_stack_t {
  89.         char __user *sp;
  90.         int  size;
  91.         int  flags;
  92. } svr4_stack_t;
  93.  
  94. /* Context used by getcontext and setcontext */
  95. typedef struct svr4_ucontext_t {
  96.     u_long               flags; /* context flags, indicate what is loaded */
  97.     struct svr4_ucontext *link;
  98.     svr4_sigset_t        sigmask;
  99.     svr4_stack_t         stack;
  100.     svr4_mcontext_t      mcontext;
  101.     long                 pad[23];
  102. } svr4_ucontext_t;                          
  103.  
  104. /* windows hold the windows as they were at signal time,
  105.  * ucontext->mcontext holds a pointer to them.
  106.  * addresses for uc and si are passed as parameters to svr4 signal
  107.  * handler
  108.  */
  109.  
  110. /* This is the signal frame that is passed to the signal handler */
  111. typedef struct {
  112.     svr4_gwindows_t gw;    /* windows */
  113.     svr4_ucontext_t uc;    /* machine context */
  114.     svr4_siginfo_t  si;    /* siginfo */
  115. } svr4_signal_frame_t;
  116.  
  117. #define SVR4_SF_ALIGNED (((sizeof (svr4_signal_frame_t) + 7) & (~7)))
  118.  
  119. #endif /* include control */
  120.