~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/asm-sparc64/sigcontext.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* $Id: sigcontext.h,v 1.12 1999/09/06 08:22:09 jj Exp $ */
  2 #ifndef __SPARC64_SIGCONTEXT_H
  3 #define __SPARC64_SIGCONTEXT_H
  4 
  5 #ifdef __KERNEL__
  6 #include <asm/ptrace.h>
  7 #endif
  8 
  9 #ifndef __ASSEMBLY__
 10 
 11 #ifdef __KERNEL__
 12 
 13 #define __SUNOS_MAXWIN   31
 14 
 15 /* This is what SunOS does, so shall I unless we use new 32bit signals or rt signals. */
 16 struct sigcontext32 {
 17         int sigc_onstack;      /* state to restore */
 18         int sigc_mask;         /* sigmask to restore */
 19         int sigc_sp;           /* stack pointer */
 20         int sigc_pc;           /* program counter */
 21         int sigc_npc;          /* next program counter */
 22         int sigc_psr;          /* for condition codes etc */
 23         int sigc_g1;           /* User uses these two registers */
 24         int sigc_o0;           /* within the trampoline code. */
 25 
 26         /* Now comes information regarding the users window set
 27          * at the time of the signal.
 28          */
 29         int sigc_oswins;       /* outstanding windows */
 30 
 31         /* stack ptrs for each regwin buf */
 32         unsigned sigc_spbuf[__SUNOS_MAXWIN];
 33 
 34         /* Windows to restore after signal */
 35         struct reg_window32 sigc_wbuf[__SUNOS_MAXWIN];
 36 };
 37 
 38 #endif
 39 
 40 #ifdef __KERNEL__
 41 
 42 /* This is what we use for 32bit new non-rt signals. */
 43 
 44 typedef struct {
 45         struct {
 46                 unsigned int psr;
 47                 unsigned int pc;
 48                 unsigned int npc;
 49                 unsigned int y;
 50                 unsigned int u_regs[16]; /* globals and ins */
 51         }                       si_regs;
 52         int                     si_mask;
 53 } __siginfo32_t;
 54 
 55 #endif
 56 
 57 typedef struct {
 58         unsigned   int si_float_regs [64];
 59         unsigned   long si_fsr;
 60         unsigned   long si_gsr;
 61         unsigned   long si_fprs;
 62 } __siginfo_fpu_t;
 63 
 64 /* This is what SunOS doesn't, so we have to write this alone
 65    and do it properly. */
 66 struct sigcontext {
 67         /* The size of this array has to match SI_MAX_SIZE from siginfo.h */
 68         char                    sigc_info[128];
 69         struct {
 70                 unsigned long   u_regs[16]; /* globals and ins */
 71                 unsigned long   tstate;
 72                 unsigned long   tpc;
 73                 unsigned long   tnpc;
 74                 unsigned int    y;
 75                 unsigned int    fprs;
 76         }                       sigc_regs;
 77         __siginfo_fpu_t *       sigc_fpu_save;
 78         struct {
 79                 void    *       ss_sp;
 80                 int             ss_flags;
 81                 unsigned long   ss_size;
 82         }                       sigc_stack;
 83         unsigned long           sigc_mask;
 84 };
 85 
 86 #ifdef __KERNEL__
 87 
 88 /* This magic should be in g_upper[0] for all upper parts
 89    to be valid.  */
 90 #define SIGINFO_EXTRA_V8PLUS_MAGIC      0x130e269
 91 typedef struct {
 92         unsigned   int g_upper[8];
 93         unsigned   int o_upper[8];
 94 } siginfo_extra_v8plus_t;
 95 
 96 #endif
 97 
 98 #endif /* !(__ASSEMBLY__) */
 99 
100 #endif /* !(__SPARC64_SIGCONTEXT_H) */
101 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.