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