|  | /* $Id: sigcontext.h,v 1.14 1999/09/06 08:22:05 jj Exp $ */ | 
|  | #ifndef __SPARC_SIGCONTEXT_H | 
|  | #define __SPARC_SIGCONTEXT_H | 
|  |  | 
|  | #ifdef __KERNEL__ | 
|  | #include <asm/ptrace.h> | 
|  |  | 
|  | #ifndef __ASSEMBLY__ | 
|  |  | 
|  | #define __SUNOS_MAXWIN   31 | 
|  |  | 
|  | /* This is what SunOS does, so shall I. */ | 
|  | struct sigcontext { | 
|  | int sigc_onstack;      /* state to restore */ | 
|  | int sigc_mask;         /* sigmask to restore */ | 
|  | int sigc_sp;           /* stack pointer */ | 
|  | int sigc_pc;           /* program counter */ | 
|  | int sigc_npc;          /* next program counter */ | 
|  | int sigc_psr;          /* for condition codes etc */ | 
|  | int sigc_g1;           /* User uses these two registers */ | 
|  | int sigc_o0;           /* within the trampoline code. */ | 
|  |  | 
|  | /* Now comes information regarding the users window set | 
|  | * at the time of the signal. | 
|  | */ | 
|  | int sigc_oswins;       /* outstanding windows */ | 
|  |  | 
|  | /* stack ptrs for each regwin buf */ | 
|  | char *sigc_spbuf[__SUNOS_MAXWIN]; | 
|  |  | 
|  | /* Windows to restore after signal */ | 
|  | struct { | 
|  | unsigned long	locals[8]; | 
|  | unsigned long	ins[8]; | 
|  | } sigc_wbuf[__SUNOS_MAXWIN]; | 
|  | }; | 
|  |  | 
|  | typedef struct { | 
|  | struct { | 
|  | unsigned long psr; | 
|  | unsigned long pc; | 
|  | unsigned long npc; | 
|  | unsigned long y; | 
|  | unsigned long u_regs[16]; /* globals and ins */ | 
|  | }		si_regs; | 
|  | int		si_mask; | 
|  | } __siginfo_t; | 
|  |  | 
|  | typedef struct { | 
|  | unsigned   long si_float_regs [32]; | 
|  | unsigned   long si_fsr; | 
|  | unsigned   long si_fpqdepth; | 
|  | struct { | 
|  | unsigned long *insn_addr; | 
|  | unsigned long insn; | 
|  | } si_fpqueue [16]; | 
|  | } __siginfo_fpu_t; | 
|  |  | 
|  | #endif /* !(__ASSEMBLY__) */ | 
|  |  | 
|  | #endif /* (__KERNEL__) */ | 
|  |  | 
|  | #endif /* !(__SPARC_SIGCONTEXT_H) */ |