/* Copyright (C) 2003 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1999 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ #ifndef __dj_include_debug_dbgcom_h_ #define __dj_include_debug_dbgcom_h_ #ifdef __cplusplus extern "C" { #endif #ifndef __dj_ENFORCE_ANSI_FREESTANDING #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \ || !defined(__STRICT_ANSI__) || defined(__cplusplus) #endif /* (__STDC_VERSION__ >= 199901L) || !__STRICT_ANSI__ */ #ifndef __STRICT_ANSI__ #ifndef _POSIX_SOURCE #include #include typedef struct { unsigned long app_base; /* linear base address of application */ unsigned long dr[8]; /* debug registers, set when a_tss runs */ } ExternalDebuggerInfo; extern ExternalDebuggerInfo edi; /* structure of FPU state */ /* 14 bytes for FPU env */ /* plus 8*10 bytes from the FPU stack */ /* r[8] is the array as defined in intel docs */ /* st0 is r[top] */ #define NPX_TOP_MASK 0x3800 #define NPX_TOP_SHIFT 11 typedef struct { unsigned short sig0; unsigned short sig1; unsigned short sig2; unsigned short sig3; unsigned short exponent:15; unsigned short sign:1; } NPXREG; typedef struct { unsigned long control; unsigned long status; unsigned long tag; unsigned long eip; unsigned long cs; unsigned long dataptr; unsigned long datasel; NPXREG reg[8]; long double st[8]; char st_valid[8]; long double mmx[8]; char in_mmx_mode; char top; } NPX; extern NPX npx; void save_npx (void); /* Save the FPU of the debugged program */ void load_npx (void); /* Restore the FPU of the debugged program */ void run_child(void); int read_child(unsigned child_addr, void *buf, unsigned len); int write_child(unsigned child_addr, void *buf, unsigned len); void edi_init(jmp_buf start_state); void cleanup_client(void); #endif /* !_POSIX_SOURCE */ #endif /* !__STRICT_ANSI__ */ #endif /* !__dj_ENFORCE_ANSI_FREESTANDING */ #ifndef __dj_ENFORCE_FUNCTION_CALLS #endif /* !__dj_ENFORCE_FUNCTION_CALLS */ #ifdef __cplusplus } #endif #endif /* !__dj_include_debug_dbgcom_h_ */