X-Git-Url: http://git.jankratochvil.net/?a=blobdiff_plain;f=include%2Fdebug.h;h=acc6db0dcc0ebbc250a8526f30066c65da341db7;hb=refs%2Ftags%2Fcaptive-0_8;hp=38c9223a5c9fdc9958ef7636a1d0855ee0564bf3;hpb=569875a61758c7ea252562281ac4d95dce52f252;p=reactos.git diff --git a/include/debug.h b/include/debug.h index 38c9223..acc6db0 100644 --- a/include/debug.h +++ b/include/debug.h @@ -34,26 +34,12 @@ #define DPRINT1(args...) do { DbgPrint("(%s:%d) ",__FILE__,__LINE__); DbgPrint(args); } while(0); #define CHECKPOINT1 do { DbgPrint("%s:%d\n",__FILE__,__LINE__); } while(0); -extern unsigned int old_idt[256][2]; -//extern unsigned int idt; -extern unsigned int old_idt_valid; - -#ifdef __NTOSKRNL__ -//#define DPRINT_CHECKS ExAllocatePool(NonPagedPool,0); assert(old_idt_valid || (!memcmp(old_idt,KiIdt,256*2))); -//#define DPRINT_CHECKS ExAllocatePool(NonPagedPool,0); -#define DPRINT_CHECKS -#else -#define DPRINT_CHECKS -#endif #ifndef NDEBUG -#define OLD_DPRINT(fmt,args...) do { DbgPrint("(%s:%d) ",__FILE__,__LINE__); DbgPrint(fmt,args); } while(0); -#define DPRINT(args...) do { DbgPrint("(%s:%d) ",__FILE__,__LINE__); DbgPrint(args); DPRINT_CHECKS } while(0); +#define DPRINT(args...) do { DbgPrint("(%s:%d) ",__FILE__,__LINE__); DbgPrint(args); } while(0); #define CHECKPOINT do { DbgPrint("%s:%d\n",__FILE__,__LINE__); } while(0); #else -//#define DPRINT(args...) do { DPRINT_CHECKS } while (0); #define DPRINT(args...) -#define OLD_DPRINT(args...) #define CHECKPOINT #endif /* NDEBUG */ @@ -65,36 +51,15 @@ extern unsigned int old_idt_valid; #define ASSERT_IRQL(x) assert(KeGetCurrentIrql()<=(x)) #define assert_irql(x) assert(KeGetCurrentIrql()<=(x)) -#define HBP_EXECUTE (0) -#define HBP_WRITE (1) -#define HBP_READWRITE (3) - -#define HBP_BYTE (0) -#define HBP_WORD (1) -#define HBP_DWORD (3) - -/* - * FUNCTION: Sets a hardware breakpoint - * ARGUMENTS: - * i = breakpoint to set (0 to 3) - * addr = linear address to break on - * type = Type of access to break on - * len = length of the variable to watch - * NOTES: - * The variable to watch must be aligned to its length (i.e. a dword - * breakpoint must be aligned to a dword boundary) - * - * A fatal exception will be generated on the access to the variable. - * It is (at the moment) only really useful for catching undefined - * pointers if you know the variable effected but not the buggy - * routine. - * - * FIXME: Extend to call out to kernel debugger on breakpoint - * Add support for I/O breakpoints - * REFERENCES: See the i386 programmer manual for more details - */ -void set_breakpoint(unsigned int i, unsigned int addr, unsigned int type, - unsigned int len); - +/* Macros expanding to the appropriate inline assembly to raise a breakpoint */ +#if defined(_M_IX86) +#define ASM_BREAKPOINT "\nint $3\n" +#elif defined(_M_ALPHA) +#define ASM_BREAKPOINT "\ncall_pal bpt\n" +#elif defined(_M_MIPS) +#define ASM_BREAKPOINT "\nbreak\n" +#else +#error Unsupported architecture. +#endif #endif /* __INTERNAL_DEBUG */