Home | History | Annotate | Line # | Download | only in include
mcontext.h revision 1.4
      1 /*	$NetBSD: mcontext.h,v 1.4 2003/10/26 08:06:56 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 #define _UC_MACHINE32_PAD_32		/* Padding appended to ucontext_t */
     69 #define	_UC_MACHINE32_SP(uc)	((uc)->uc_mcontext.__gregs[_REG32_O6])
     70 
     71 #endif /* _SPARC64_MCONTEXT_H_ */
     72