#ifndef _NT_THREAD_I386_H_ #define _NT_THREAD_I386_H_ typedef struct _nt_floating_save_area_i386 { uint32_t uc_ctrl_word; /* 0x000 */ uint32_t uc_status_word; /* 0x004 */ uint32_t uc_tag_word; /* 0x008 */ uint32_t uc_error_offset; /* 0x00c */ uint32_t uc_error_selector; /* 0x010 */ uint32_t uc_data_offset; /* 0x014 */ uint32_t uc_data_selector; /* 0x018 */ unsigned char uc_reg_area[80]; /* 0x01c */ uint32_t uc_cr0_npx_state; /* 0x06c */ } nt_floating_save_area_i386; typedef struct _nt_thread_context_i386 { uint32_t uc_context_flags; /* 0x000 */ uint32_t uc_dr0; /* 0x004 */ uint32_t uc_dr1; /* 0x008 */ uint32_t uc_dr2; /* 0x00c */ uint32_t uc_dr3; /* 0x010 */ uint32_t uc_dr6; /* 0x014 */ uint32_t uc_dr7; /* 0x018 */ nt_floating_save_area_i386 uc_float_save; /* 0x01c */ uint32_t uc_seg_gs; /* 0x08c */ uint32_t uc_seg_fs; /* 0x090 */ uint32_t uc_seg_es; /* 0x094 */ uint32_t uc_seg_ds; /* 0x098 */ uint32_t uc_edi; /* 0x09c */ uint32_t uc_esi; /* 0x0a0 */ uint32_t uc_ebx; /* 0x0a4 */ uint32_t uc_edx; /* 0x0a8 */ uint32_t uc_ecx; /* 0x0ac */ uint32_t uc_eax; /* 0x0b0 */ uint32_t uc_ebp; /* 0x0b4 */ uint32_t uc_eip; /* 0x0b8 */ uint32_t uc_seg_cs; /* 0x0bc */ uint32_t uc_eflags; /* 0x0c0 */ uint32_t uc_esp; /* 0x0c4 */ uint32_t uc_seg_ss; /* 0x0c8 */ unsigned char uc_extended_regs[512]; /* 0x0cc */ } nt_thread_context_i386; #endif