Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v2.6.31 96 lines 2.3 kB view raw
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. */ 12struct 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 37typedef 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 49typedef 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. */ 58struct 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 80typedef 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) */