--- np2/i386c/ia32/debug.c 2011/01/15 17:17:23 1.15 +++ np2/i386c/ia32/debug.c 2012/02/07 09:11:10 1.24 @@ -32,6 +32,26 @@ #endif +/* + * register strings + */ +const char *reg8_str[CPU_REG_NUM] = { + "al", "cl", "dl", "bl", "ah", "ch", "dh", "bh" +}; + +const char *reg16_str[CPU_REG_NUM] = { + "ax", "cx", "dx", "bx", "sp", "bp", "si", "di" +}; + +const char *reg32_str[CPU_REG_NUM] = { + "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi" +}; + +const char *sreg_str[CPU_SEGREG_NUM] = { + "es", "cs", "ss", "ds", "fs", "gs" +}; + + char * cpu_reg2str(void) { @@ -41,7 +61,7 @@ cpu_reg2str(void) "eax=%08x ecx=%08x edx=%08x ebx=%08x\n" "esp=%08x ebp=%08x esi=%08x edi=%08x\n" "eip=%08x prev_eip=%08x\n" - "es=%04x cs=%04x ss=%04x ds=%04x fs=%04x gs=%04x\n" + "cs=%04x ss=%04x ds=%04x es=%04x fs=%04x gs=%04x\n" "eflag=%08x " /* ID VIP VIF AC VM RF NT IOPL OF DF IF TF SF ZF AF PF CF */ "[ ID=%d VIP=%d VIF=%d AC=%d VM=%d RF=%d NT=%d IOPL=%d %s %s %s TF=%d %s %s %s %s %s ]\n" @@ -101,7 +121,7 @@ put_cpuinfo(void) #endif strcat(buf, a20str()); - printf(buf); + printf("%s", buf); } void @@ -115,7 +135,7 @@ dbg_printf(const char *str, ...) va_end(ap); strcat(buf, "\n"); - printf(buf); + printf("%s", buf); } void @@ -134,7 +154,7 @@ memory_dump(int idx, UINT32 madr) size = 0x100; addr = madr - 0x80; } - VERBOSE(("memory dump\n-- \n")); + VERBOSE(("memory dump\n--")); for (s = 0; s < size; s++) { if ((s % 16) == 0) { VERBOSE(("%08x: ", addr + s)); @@ -206,8 +226,6 @@ tr_dump(UINT16 selector, UINT32 base, UI UINT32 v; UINT i; - (void)selector; - VERBOSE(("TR_DUMP: selector = %04x", selector)); for (i = 0; i < limit; i += 4) { @@ -253,20 +271,23 @@ segdesc_dump(descriptor_t *sdp) __ASSERT(sdp != NULL); - VERBOSE(("\ndump descriptor", sdp)); + VERBOSE(("dump descriptor: %p", sdp)); VERBOSE(("valid : %s", SEG_IS_VALID(sdp) ? "true" : "false")); VERBOSE(("present : %s", SEG_IS_PRESENT(sdp) ? "true" : "false")); VERBOSE(("DPL : %d", sdp->dpl)); + VERBOSE(("type : %d", sdp->type)); VERBOSE(("kind : %s", SEG_IS_SYSTEM(sdp) ? "system" : "code/data")); if (!SEG_IS_SYSTEM(sdp)) { if (SEG_IS_CODE(sdp)) { - VERBOSE(("type : %sconforming code", + VERBOSE(("type : %dbit %sconforming code", + SEG_IS_32BIT(sdp) ? 32 : 16, SEG_IS_CONFORMING_CODE(sdp) ? "" : "non-")); VERBOSE(("access : execute%s", SEG_IS_READABLE_CODE(sdp) ? "/read" : "")); } else { - VERBOSE(("type : expand-%s data", + VERBOSE(("type : %dbit expand-%s data", + SEG_IS_32BIT(sdp) ? 32 : 16, SEG_IS_EXPANDDOWN_DATA(sdp) ? "down" : "up")); VERBOSE(("access : read%s", SEG_IS_WRITABLE_DATA(sdp) ? "/write" : "")); @@ -337,9 +358,6 @@ segdesc_dump(descriptor_t *sdp) break; } } - VERBOSE(("\n")); -#else - (void)sdp; #endif }