1/* $NetBSD: mcontext.h,v 1.7 2006/03/14 22:03:39 cube 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 */ 9typedef int __greg32_t; 10typedef __greg32_t __gregset32_t[_NGREG32]; 11 12typedef unsigned int netbsd32___greg32p_t; 13typedef unsigned int netbsd32___fqp_t; 14typedef 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. */ 37typedef 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. */ 43typedef 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 */ 50typedef 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'(?) */ 63typedef struct { 64 unsigned int __xrs_id; /* See below */ 65 unsigned int __xrs_ptr; /* points into filler area */ 66} __xrs32_t; 67 68typedef 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 78#endif /* _SPARC64_MCONTEXT_H_ */ 79