#ifndef _RISCV_MCONTEXT_H_
#define _RISCV_MCONTEXT_H_
#define _NGREG 32
#define _NFREG 33
#ifndef _BSD_FPREG_T_
union __fpreg {
__uint64_t u_u64;
double u_d;
};
#define _BSD_FPREG_T_ union __fpreg
#endif
typedef long __greg_t;
typedef __greg_t __gregset_t[_NGREG];
typedef __uint32_t __greg32_t;
typedef __greg32_t __gregset32_t[_NGREG];
typedef _BSD_FPREG_T_ __fregset_t[_NFREG];
#define _REG_X1 0
#define _REG_X2 1
#define _REG_X3 2
#define _REG_X4 3
#define _REG_X5 4
#define _REG_X6 5
#define _REG_X7 6
#define _REG_X8 7
#define _REG_X9 8
#define _REG_X10 9
#define _REG_X11 10
#define _REG_X12 11
#define _REG_X13 12
#define _REG_X14 13
#define _REG_X15 14
#define _REG_X16 15
#define _REG_X17 16
#define _REG_X18 17
#define _REG_X19 18
#define _REG_X20 19
#define _REG_X21 20
#define _REG_X22 21
#define _REG_X23 22
#define _REG_X24 23
#define _REG_X25 24
#define _REG_X26 25
#define _REG_X27 26
#define _REG_X28 27
#define _REG_X29 28
#define _REG_X30 29
#define _REG_X31 30
#define _REG_PC 31
#define _REG_RA _REG_X1
#define _REG_SP _REG_X2
#define _REG_GP _REG_X3
#define _REG_TP _REG_X4
#define _REG_T0 _REG_X5
#define _REG_T1 _REG_X6
#define _REG_T2 _REG_X7
#define _REG_S0 _REG_X8
#define _REG_S1 _REG_X9
#define _REG_RV _REG_X10
#define _REG_A0 _REG_X10
#define _REG_A1 _REG_X11
#define _REG_A2 _REG_X12
#define _REG_A3 _REG_X13
#define _REG_A4 _REG_X14
#define _REG_A5 _REG_X15
#define _REG_A6 _REG_X16
#define _REG_A7 _REG_X17
#define _REG_S2 _REG_X18
#define _REG_S3 _REG_X19
#define _REG_S4 _REG_X20
#define _REG_S5 _REG_X21
#define _REG_S6 _REG_X22
#define _REG_S7 _REG_X23
#define _REG_S8 _REG_X24
#define _REG_S9 _REG_X25
#define _REG_S10 _REG_X26
#define _REG_S11 _REG_X27
#define _REG_T3 _REG_X28
#define _REG_T4 _REG_X29
#define _REG_T5 _REG_X30
#define _REG_T6 _REG_X31
#define _REG_F0 0
#define _REG_FPCSR 32
typedef struct {
__gregset_t __gregs;
__fregset_t __fregs;
__greg_t __spare[7];
} mcontext_t;
typedef struct {
__gregset32_t __gregs;
__fregset_t __fregs;
__greg32_t __spare[7];
} mcontext32_t;
#define _UC_SETSTACK 0x00010000
#define _UC_CLRSTACK 0x00020000
#define _UC_TLSBASE 0x00080000
#define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_SP])
#define _UC_MACHINE_FP(uc) ((uc)->uc_mcontext.__gregs[_REG_S0])
#define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_PC])
#define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_RV])
#define _UC_MACHINE_SET_PC(uc, pc) _UC_MACHINE_PC(uc) = (pc)
#endif