/* * Copyright 2005-2009, Haiku Inc. * Distributed under the terms of the MIT License. */ #ifndef _ARCH_X86_DEBUGGER_H #define _ARCH_X86_DEBUGGER_H typedef struct x86_fp_register { uint8 value[10]; uint8 reserved[6]; } x86_fp_register; typedef struct x86_xmm_register { uint8 value[16]; } x86_xmm_register; typedef struct x86_extended_registers { uint16 control; uint16 status; uint8 tag; uint8 reserved1; uint16 opcode; uint32 instruction_pointer; uint16 cs; uint16 reserved2; uint32 data_pointer; uint16 ds; uint16 reserved3; uint32 mxcsr; uint32 mxcsr_mask; union { x86_fp_register fp_registers[8]; // st0-st7 x86_fp_register mmx_registers[8]; // mm0-mm7 }; x86_xmm_register xmm_registers[8]; // xmm0-xmm7 uint8 reserved4[224]; // 288 - 512 } x86_extended_registers; struct x86_debug_cpu_state { x86_extended_registers extended_registers; uint32 gs; uint32 fs; uint32 es; uint32 ds; uint32 edi; uint32 esi; uint32 ebp; uint32 esp; uint32 ebx; uint32 edx; uint32 ecx; uint32 eax; uint32 vector; uint32 error_code; uint32 eip; uint32 cs; uint32 eflags; uint32 user_esp; uint32 user_ss; } __attribute__((aligned(16))); #endif // _ARCH_X86_DEBUGGER_H