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