libucontext/arch/x86/freestanding/bits.h

49 lines
1.0 KiB
C

#ifndef LIBUCONTEXT_BITS_H
#define LIBUCONTEXT_BITS_H
#define REG_GS (0)
#define REG_FS (1)
#define REG_ES (2)
#define REG_DS (3)
#define REG_EDI (4)
#define REG_ESI (5)
#define REG_EBP (6)
#define REG_ESP (7)
#define REG_EBX (8)
#define REG_EDX (9)
#define REG_ECX (10)
#define REG_EAX (11)
#define REG_EIP (14)
typedef int libucontext_greg_t, libucontext_gregset_t[19];
typedef struct libucontext_fpstate {
unsigned long cw, sw, tag, ipoff, cssel, dataoff, datasel;
struct {
unsigned short significand[4], exponent;
} _st[8];
unsigned long status;
} *libucontext_fpregset_t;
typedef struct {
libucontext_gregset_t gregs;
libucontext_fpregset_t fpregs;
unsigned long oldmask, cr2;
} 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