0001
0002
0003
0004
0005
0006
0007
0008 #ifndef __SPARC64_UCTX_H
0009 #define __SPARC64_UCTX_H
0010
0011 #define MC_TSTATE 0
0012 #define MC_PC 1
0013 #define MC_NPC 2
0014 #define MC_Y 3
0015 #define MC_G1 4
0016 #define MC_G2 5
0017 #define MC_G3 6
0018 #define MC_G4 7
0019 #define MC_G5 8
0020 #define MC_G6 9
0021 #define MC_G7 10
0022 #define MC_O0 11
0023 #define MC_O1 12
0024 #define MC_O2 13
0025 #define MC_O3 14
0026 #define MC_O4 15
0027 #define MC_O5 16
0028 #define MC_O6 17
0029 #define MC_O7 18
0030 #define MC_NGREG 19
0031
0032 typedef unsigned long mc_greg_t;
0033 typedef mc_greg_t mc_gregset_t[MC_NGREG];
0034
0035 #define MC_MAXFPQ 16
0036 struct mc_fq {
0037 unsigned long *mcfq_addr;
0038 unsigned int mcfq_insn;
0039 };
0040
0041 struct mc_fpu {
0042 union {
0043 unsigned int sregs[32];
0044 unsigned long dregs[32];
0045 long double qregs[16];
0046 } mcfpu_fregs;
0047 unsigned long mcfpu_fsr;
0048 unsigned long mcfpu_fprs;
0049 unsigned long mcfpu_gsr;
0050 struct mc_fq *mcfpu_fq;
0051 unsigned char mcfpu_qcnt;
0052 unsigned char mcfpu_qentsz;
0053 unsigned char mcfpu_enab;
0054 };
0055 typedef struct mc_fpu mc_fpu_t;
0056
0057 typedef struct {
0058 mc_gregset_t mc_gregs;
0059 mc_greg_t mc_fp;
0060 mc_greg_t mc_i7;
0061 mc_fpu_t mc_fpregs;
0062 } mcontext_t;
0063
0064 struct ucontext {
0065 struct ucontext *uc_link;
0066 unsigned long uc_flags;
0067 sigset_t uc_sigmask;
0068 mcontext_t uc_mcontext;
0069 };
0070 typedef struct ucontext ucontext_t;
0071
0072 #endif