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