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 #endif /* !(__ASSEMBLY__) */
87 
88 #endif /* !(__SPARC64_SIGCONTEXT_H) */
89