-
-
-
-struct x86_thread_state64 {
- uint64_t rax;
- uint64_t rbx;
- uint64_t rcx;
- uint64_t rdx;
- uint64_t rdi;
- uint64_t rsi;
- uint64_t rbp;
- uint64_t rsp;
- uint64_t r8;
- uint64_t r9;
- uint64_t r10;
- uint64_t r11;
- uint64_t r12;
- uint64_t r13;
- uint64_t r14;
- uint64_t r15;
- uint64_t rip;
- uint64_t rflags;
- uint64_t cs;
- uint64_t fs;
- uint64_t gs;
-} ;
-
-
-typedef struct x86_thread_state64 x86_thread_state64_t;
-#define x86_THREAD_STATE64_COUNT ((mach_msg_type_number_t) \
- ( sizeof (x86_thread_state64_t) / sizeof (int) ))
-
-
-
-
-struct x86_thread_state {
- x86_state_hdr_t tsh;
- union {
- x86_thread_state32_t ts32;
- x86_thread_state64_t ts64;
- } uts;
-} ;
-
-
-typedef struct x86_thread_state x86_thread_state_t;
-#define x86_THREAD_STATE_COUNT ((mach_msg_type_number_t) \
- ( sizeof (x86_thread_state_t) / sizeof (int) ))
-
-
-
-/*
- * Default segment register values.
- */
-
-#define USER_CODE_SELECTOR 0x0017
-#define USER_DATA_SELECTOR 0x001f
-#define KERN_CODE_SELECTOR 0x0008
-#define KERN_DATA_SELECTOR 0x0010
-
-typedef struct fp_control {
- unsigned short invalid :1,
- denorm :1,
- zdiv :1,
- ovrfl :1,
- undfl :1,
- precis :1,
- :2,
- pc :2,
-#define FP_PREC_24B 0
-#define FP_PREC_53B 2
-#define FP_PREC_64B 3
- rc :2,
-#define FP_RND_NEAR 0
-#define FP_RND_DOWN 1
-#define FP_RND_UP 2
-#define FP_CHOP 3
- /*inf*/ :1,
- :3;
-} fp_control_t;
-/*
- * Status word.
- */
-
-typedef struct fp_status {
- unsigned short invalid :1,
- denorm :1,
- zdiv :1,
- ovrfl :1,
- undfl :1,
- precis :1,
- stkflt :1,
- errsumm :1,
- c0 :1,
- c1 :1,
- c2 :1,
- tos :3,
- c3 :1,
- busy :1;
-} fp_status_t;
-
-/* defn of 80bit x87 FPU or MMX register */
-struct mmst_reg {
- char mmst_reg[10];
- char mmst_rsrv[6];
-};
-
-
-/* defn of 128 bit XMM regs */
-struct xmm_reg {
- char xmm_reg[16];
-};
-
-/*
- * Floating point state.
- */
-
-#define FP_STATE_BYTES 512 /* number of chars worth of data from fpu_fcw */
-
-/* For legacy reasons we need to leave the hw_state as char bytes */
-struct i386_float_state {
- int fpu_reserved[2];
- fp_control_t fpu_fcw; /* x87 FPU control word */
- fp_status_t fpu_fsw; /* x87 FPU status word */
- uint8_t fpu_ftw; /* x87 FPU tag word */
- uint8_t fpu_rsrv1; /* reserved */
- uint16_t fpu_fop; /* x87 FPU Opcode */
- uint32_t fpu_ip; /* x87 FPU Instruction Pointer offset */
- uint16_t fpu_cs; /* x87 FPU Instruction Pointer Selector */
- uint16_t fpu_rsrv2; /* reserved */
- uint32_t fpu_dp; /* x87 FPU Instruction Operand(Data) Pointer offset */
- uint16_t fpu_ds; /* x87 FPU Instruction Operand(Data) Pointer Selector */
- uint16_t fpu_rsrv3; /* reserved */
- uint32_t fpu_mxcsr; /* MXCSR Register state */
- uint32_t fpu_mxcsrmask; /* MXCSR mask */
- struct mmst_reg fpu_stmm0; /* ST0/MM0 */
- struct mmst_reg fpu_stmm1; /* ST1/MM1 */
- struct mmst_reg fpu_stmm2; /* ST2/MM2 */
- struct mmst_reg fpu_stmm3; /* ST3/MM3 */
- struct mmst_reg fpu_stmm4; /* ST4/MM4 */
- struct mmst_reg fpu_stmm5; /* ST5/MM5 */
- struct mmst_reg fpu_stmm6; /* ST6/MM6 */
- struct mmst_reg fpu_stmm7; /* ST7/MM7 */
- struct xmm_reg fpu_xmm0; /* XMM 0 */
- struct xmm_reg fpu_xmm1; /* XMM 1 */
- struct xmm_reg fpu_xmm2; /* XMM 2 */
- struct xmm_reg fpu_xmm3; /* XMM 3 */
- struct xmm_reg fpu_xmm4; /* XMM 4 */
- struct xmm_reg fpu_xmm5; /* XMM 5 */
- struct xmm_reg fpu_xmm6; /* XMM 6 */
- struct xmm_reg fpu_xmm7; /* XMM 7 */
- char fpu_rsrv4[14*16]; /* reserved */
- int fpu_reserved1;
-};
-
-