/*============================================================================ DEBUG FUNCTIONS EXPORTS: void dump_regs(regs_t *regs); ============================================================================*/ #include "_krnl.h" /* IMPORTS from MAIN.C */ void printf(const char *fmt, ...); /***************************************************************************** *****************************************************************************/ #define BPERL 16 /* byte/line for dump */ void dump(unsigned char *data, unsigned count) { unsigned char byte1, byte2; while(count != 0) { for(byte1 = 0; byte1 < BPERL; byte1++) { if(count == 0) break; printf("%02X ", data[byte1]); count--; } printf("\t"); for(byte2 = 0; byte2 < byte1; byte2++) { if(data[byte2] < ' ') printf("%c", '.'); else printf("%c", data[byte2]); } printf("\n"); data += BPERL; } } /***************************************************************************** *****************************************************************************/ void dump_regs(regs_t *regs) { printf("EDI=%08X ESI=%08X EBP=%08X ESP=%08X\n", regs->edi, regs->esi, regs->ebp, regs->esp); printf("EBX=%08X EDX=%08X ECX=%08X EAX=%08X\n", regs->ebx, regs->edx, regs->ecx, regs->eax); printf(" DS=%08X ES=%08X FS=%08X GS=%08X\n", regs->ds, regs->es, regs->fs, regs->gs); printf("int=%08X err=%08X EIP=%08X CS=%08X\n", regs->which_int, regs->err_code, regs->eip, regs->cs); printf("uSP=%08X uSS=%08X\n", regs->user_esp, regs->user_ss); }