forked from ariadne/libucontext
63 lines
1.3 KiB
C
63 lines
1.3 KiB
C
#ifndef LIBUCONTEXT_BITS_H
|
|
#define LIBUCONTEXT_BITS_H
|
|
|
|
#define REG_R8 (0)
|
|
#define REG_R9 (1)
|
|
#define REG_R10 (2)
|
|
#define REG_R11 (3)
|
|
#define REG_R12 (4)
|
|
#define REG_R13 (5)
|
|
#define REG_R14 (6)
|
|
#define REG_R15 (7)
|
|
#define REG_RDI (8)
|
|
#define REG_RSI (9)
|
|
#define REG_RBP (10)
|
|
#define REG_RBX (11)
|
|
#define REG_RDX (12)
|
|
#define REG_RAX (13)
|
|
#define REG_RCX (14)
|
|
#define REG_RSP (15)
|
|
#define REG_RIP (16)
|
|
#define REG_EFL (17)
|
|
#define REG_CSGSFS (18)
|
|
#define REG_ERR (19)
|
|
#define REG_TRAPNO (20)
|
|
#define REG_OLDMASK (21)
|
|
#define REG_CR2 (22)
|
|
|
|
typedef long long libucontext_greg_t, libucontext_gregset_t[23];
|
|
|
|
typedef struct libucontext_fpstate {
|
|
unsigned short cwd, swd, ftw, fop;
|
|
unsigned long long rip, rdp;
|
|
unsigned mxcsr, mxcr_mask;
|
|
struct {
|
|
unsigned short significand[4], exponent, padding[3];
|
|
} _st[8];
|
|
struct {
|
|
unsigned element[4];
|
|
} _xmm[16];
|
|
unsigned padding[24];
|
|
} *libucontext_fpregset_t;
|
|
|
|
typedef struct {
|
|
libucontext_gregset_t gregs;
|
|
libucontext_fpregset_t fpregs;
|
|
unsigned long long __reserved1[8];
|
|
} libucontext_mcontext_t;
|
|
|
|
typedef struct {
|
|
void *ss_sp;
|
|
int ss_flags;
|
|
size_t ss_size;
|
|
} libucontext_stack_t;
|
|
|
|
typedef struct libucontext_ucontext {
|
|
unsigned long uc_flags;
|
|
struct libucontext_ucontext *uc_link;
|
|
libucontext_stack_t uc_stack;
|
|
libucontext_mcontext_t uc_mcontext;
|
|
} libucontext_ucontext_t;
|
|
|
|
#endif
|