xref: /netbsd-src/sys/arch/sparc64/include/mcontext.h (revision aaf4ece63a859a04e37cf3a7229b5fab0157cc06)
1 /*	$NetBSD: mcontext.h,v 1.6 2005/12/11 12:19:10 christos 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 #define	_REG32_PSR	0
13 #define	_REG32_PC	1
14 #define	_REG32_nPC	2
15 #define	_REG32_Y	3
16 #define	_REG32_G1	4
17 #define	_REG32_G2	5
18 #define	_REG32_G3	6
19 #define	_REG32_G4	7
20 #define	_REG32_G5	8
21 #define	_REG32_G6	9
22 #define	_REG32_G7	10
23 #define	_REG32_O0	11
24 #define	_REG32_O1	12
25 #define	_REG32_O2	13
26 #define	_REG32_O3	14
27 #define	_REG32_O4	15
28 #define	_REG32_O5	16
29 #define	_REG32_O6	17
30 #define	_REG32_O7	18
31 
32 /* Layout of a register window. */
33 typedef struct {
34 	__greg32_t	__rw_local[8];	/* %l0-7 */
35 	__greg32_t	__rw_in[8];	/* %i0-7 */
36 } __rwindow32_t;
37 
38 /* Description of available register windows. */
39 typedef struct {
40 	int		__wbcnt;
41 	__greg32_t *	__spbuf[_SPARC_MAXREGWINDOW];
42 	__rwindow32_t	__wbuf[_SPARC_MAXREGWINDOW];
43 } __gwindows32_t;
44 
45 /* FPU state description */
46 typedef struct {
47 	union {
48 		unsigned int	__fpu_regs[32];
49 		double		__fpu_dregs[16];
50 	} __fpu_fr;				/* FPR contents */
51 	struct __fq *	__fpu_q;		/* pointer to FPU insn queue */
52 	unsigned int	__fpu_fsr;		/* %fsr */
53 	unsigned char	__fpu_qcnt;		/* # entries in __fpu_q */
54 	unsigned char	__fpu_q_entrysize; 	/* size of a __fpu_q entry */
55 	unsigned char	__fpu_en;		/* this context valid? */
56 } __fpregset32_t;
57 
58 typedef struct {
59 	__gregset32_t	__gregs;	/* GPR state */
60 	__gwindows32_t *__gwins;	/* may point to register windows */
61 	__fpregset32_t	__fpregs;	/* FPU state, if any */
62 	__xrs_t		__xrs;		/* may indicate extra reg state */
63 } mcontext32_t;
64 
65 #define	_UC_SETSTACK	0x00010000
66 #define	_UC_CLRSTACK	0x00020000
67 
68 #endif /* _SPARC64_MCONTEXT_H_ */
69