forked from ariadne/libucontext
44 lines
1.0 KiB
C
44 lines
1.0 KiB
C
#ifndef LIBUCONTEXT_BITS_H
|
|
#define LIBUCONTEXT_BITS_H
|
|
|
|
typedef unsigned long long libucontext_greg_t, libucontext_gregset_t[32];
|
|
|
|
/* Container for all general registers. */
|
|
typedef __loongarch_mc_gp_state gregset_t;
|
|
|
|
/* Container for floating-point state. */
|
|
typedef union __loongarch_mc_fp_state fpregset_t;
|
|
|
|
union __loongarch_mc_fp_state {
|
|
unsigned int __val32[256 / 32];
|
|
unsigned long long __val64[256 / 64];
|
|
};
|
|
|
|
typedef struct mcontext_t {
|
|
unsigned long long __pc;
|
|
unsigned long long __gregs[32];
|
|
unsigned int __flags;
|
|
|
|
unsigned int __fcsr;
|
|
unsigned int __vcsr;
|
|
unsigned long long __fcc;
|
|
union __loongarch_mc_fp_state __fpregs[32] __attribute__((__aligned__ (32)));
|
|
|
|
unsigned int __reserved;
|
|
} 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
|