i386-macosx-thread-status.h [plain text]
#ifndef __GDB_I386_MACOSX_THREAD_STATUS_H__
#define __GDB_I386_MACOSX_THREAD_STATUS_H__
#define GDB_i386_THREAD_STATE -1
#define GDB_i386_THREAD_FPSTATE -2
typedef struct gdb_sel {
unsigned short rpl : 2;
#define KERN_PRIV 0
#define USER_PRIV 3
unsigned short ti : 1;
#define SEL_GDT 0
#define SEL_LDT 1
unsigned short index : 13;
} gdb_sel_t;
#define GDB_NULL_SEL ((gdb_sel_t) { 0, 0, 0 } )
typedef struct gdb_fp_data_reg {
unsigned short mant;
unsigned short mant1 : 16;
unsigned short mant2 : 16;
unsigned short mant3 : 16;
unsigned short exp : 15;
unsigned short sign : 1;
} gdb_fp_data_reg_t;
typedef struct gdb_fp_stack {
gdb_fp_data_reg_t ST[8];
} gdb_fp_stack_t;
typedef struct gdb_fp_tag {
unsigned short tag0 : 2;
unsigned short tag1 : 2;
unsigned short tag2 : 2;
unsigned short tag3 : 2;
unsigned short tag4 : 2;
unsigned short tag5 : 2;
unsigned short tag6 : 2;
unsigned short tag7 : 2;
} gdb_fp_tag_t;
#define FP_TAG_VALID 0
#define FP_TAG_ZERO 1
#define FP_TAG_SPEC 2
#define FP_TAG_EMPTY 3
typedef struct gdb_fp_status {
unsigned short invalid : 1;
unsigned short denorm : 1;
unsigned short zdiv : 1;
unsigned short ovrfl: 1;
unsigned short undfl : 1;
unsigned short precis : 1;
unsigned short stkflt : 1;
unsigned short errsumm : 1;
unsigned short c0 : 1;
unsigned short c1 : 1;
unsigned short c2 : 1;
unsigned short tos : 3;
unsigned short c3 : 1;
unsigned short busy : 1;
} gdb_fp_status_t;
typedef struct gdb_fp_control {
unsigned short invalid : 1;
unsigned short denorm : 1;
unsigned short zdiv : 1;
unsigned short ovrfl : 1;
unsigned short undfl : 1;
unsigned short precis : 1;
unsigned short : 2;
unsigned short pc : 2;
unsigned short rc : 2;
unsigned short : 1;
unsigned short : 3;
} gdb_fp_control_t;
#define FP_PREC_24B 0
#define FP_PREC_53B 2
#define FP_PREC_64B 3
#define FP_RND_NEAR 0
#define FP_RND_DOWN 1
#define FP_RND_UP 2
#define FP_CHOP 3
typedef struct gdb_fp_env {
gdb_fp_control_t control;
unsigned short : 16;
gdb_fp_status_t status;
unsigned short : 16;
gdb_fp_tag_t tag;
unsigned short : 16;
unsigned int ip;
gdb_sel_t cs;
unsigned short opcode;
unsigned int dp;
gdb_sel_t ds;
unsigned short : 16;
} gdb_fp_env_t;
typedef struct gdb_i386_thread_state {
unsigned int eax;
unsigned int ebx;
unsigned int ecx;
unsigned int edx;
unsigned int edi;
unsigned int esi;
unsigned int ebp;
unsigned int esp;
unsigned int ss;
unsigned int eflags;
unsigned int eip;
unsigned int cs;
unsigned int ds;
unsigned int es;
unsigned int fs;
unsigned int gs;
} gdb_i386_thread_state_t;
typedef struct gdb_i386_thread_fpstate {
gdb_fp_env_t environ;
gdb_fp_stack_t stack;
} gdb_i386_thread_fpstate_t;
#define GDB_i386_THREAD_STATE_COUNT \
(sizeof (gdb_i386_thread_state_t) / sizeof (unsigned int))
#define GDB_i386_THREAD_FPSTATE_COUNT \
(sizeof (gdb_i386_thread_fpstate_t) / sizeof (unsigned int))
#endif