haiku/headers/os/arch/x86/arch_debugger.h

69 lines
1.2 KiB
C

/*
* 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