1 /*	$NetBSD: mcontext.h,v 1.9 2012/09/12 02:00:54 manu Exp $	*/
2 
3 #ifndef _SPARC64_MCONTEXT_H_
4 #define _SPARC64_MCONTEXT_H_
5 
6 #include <sparc/mcontext.h>
7 
8 #define _NGREG32	19	/* %psr, pc, npc, %g1-7, %o0-7 */
9 typedef	int	__greg32_t;
10 typedef	__greg32_t	__gregset32_t[_NGREG32];
11 
12 typedef unsigned int	netbsd32___greg32p_t;
13 typedef unsigned int	netbsd32___fqp_t;
14 typedef unsigned int	netbsd32___gwindows32p_t;
15 
16 #define	_REG32_PSR	0
17 #define	_REG32_PC	1
18 #define	_REG32_nPC	2
19 #define	_REG32_Y	3
20 #define	_REG32_G1	4
21 #define	_REG32_G2	5
22 #define	_REG32_G3	6
23 #define	_REG32_G4	7
24 #define	_REG32_G5	8
25 #define	_REG32_G6	9
26 #define	_REG32_G7	10
27 #define	_REG32_O0	11
28 #define	_REG32_O1	12
29 #define	_REG32_O2	13
30 #define	_REG32_O3	14
31 #define	_REG32_O4	15
32 #define	_REG32_O5	16
33 #define	_REG32_O6	17
34 #define	_REG32_O7	18
35 
36 /* Layout of a register window. */
37 typedef struct {
38 	__greg32_t	__rw_local[8];	/* %l0-7 */
39 	__greg32_t	__rw_in[8];	/* %i0-7 */
40 } __rwindow32_t;
41 
42 /* Description of available register windows. */
43 typedef struct {
44 	int		__wbcnt;
45 	netbsd32___greg32p_t	__spbuf[_SPARC_MAXREGWINDOW];
46 	__rwindow32_t	__wbuf[_SPARC_MAXREGWINDOW];
47 } __gwindows32_t;
48 
49 /* FPU state description */
50 typedef struct {
51 	union {
52 		unsigned int	__fpu_regs[32];
53 		double		__fpu_dregs[16];
54 	} __fpu_fr;				/* FPR contents */
55 	netbsd32___fqp_t	__fpu_q;	/* pointer to FPU insn queue */
56 	unsigned int	__fpu_fsr;		/* %fsr */
57 	unsigned char	__fpu_qcnt;		/* # entries in __fpu_q */
58 	unsigned char	__fpu_q_entrysize; 	/* size of a __fpu_q entry */
59 	unsigned char	__fpu_en;		/* this context valid? */
60 } __fpregset32_t;
61 
62 /* `Extra Register State'(?) */
63 typedef struct {
64 	unsigned int	__xrs_id;	/* See below */
65 	unsigned int	__xrs_ptr;	/* points into filler area */
66 } __xrs32_t;
67 
68 typedef struct {
69 	__gregset32_t	__gregs;	/* GPR state */
70 	netbsd32___gwindows32p_t __gwins;/* may point to register windows */
71 	__fpregset32_t	__fpregs;	/* FPU state, if any */
72 	__xrs32_t	__xrs;		/* may indicate extra reg state */
73 } mcontext32_t;
74 
75 #define	_UC_SETSTACK	0x00010000
76 #define	_UC_CLRSTACK	0x00020000
77 #define	_UC_TLSBASE	0x00080000
78 
79 #endif /* _SPARC64_MCONTEXT_H_ */
80