Commit dc6f57fd55d03546197dc0ea96b743fffe7b8f75
1 parent
65262d57
debug updates - page_unprotect() is no longer needed in softmmu case
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@505 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
28 additions
and
12 deletions
target-i386/helper.c
... | ... | @@ -281,6 +281,10 @@ static void switch_tss(int tss_selector, |
281 | 281 | uint8_t *ptr; |
282 | 282 | |
283 | 283 | type = (e2 >> DESC_TYPE_SHIFT) & 0xf; |
284 | +#ifdef DEBUG_PCALL | |
285 | + if (loglevel) | |
286 | + fprintf(logfile, "switch_tss: sel=0x%04x type=%d src=%d\n", tss_selector, type, source); | |
287 | +#endif | |
284 | 288 | |
285 | 289 | /* if task gate, we read the TSS segment and we load it */ |
286 | 290 | if (type == 5) { |
... | ... | @@ -848,24 +852,40 @@ void do_interrupt(int intno, int is_int, int error_code, |
848 | 852 | { |
849 | 853 | extern FILE *stdout; |
850 | 854 | static int count; |
851 | - if (env->cr[0] & CR0_PE_MASK) { | |
852 | - fprintf(stdout, "%d: interrupt: vector=%02x error_code=%04x int=%d\n", | |
853 | - count, intno, error_code, is_int); | |
855 | + if ((env->cr[0] && CR0_PE_MASK)) { | |
856 | + fprintf(stdout, "%d: interrupt: vector=%02x error_code=%04x int=%d CPL=%d CS:EIP=%04x:%08x SS:ESP=%04x:%08x EAX=%08x\n", | |
857 | + count, intno, error_code, is_int, | |
858 | + env->hflags & HF_CPL_MASK, | |
859 | + env->segs[R_CS].selector, EIP, | |
860 | + env->segs[R_SS].selector, ESP, | |
861 | + EAX); | |
862 | + if (0) { | |
863 | + cpu_x86_dump_state(env, stdout, X86_DUMP_CCOP); | |
864 | +#if 0 | |
865 | + { | |
866 | + int i; | |
867 | + uint8_t *ptr; | |
868 | + fprintf(stdout, " code="); | |
869 | + ptr = env->segs[R_CS].base + env->eip; | |
870 | + for(i = 0; i < 16; i++) { | |
871 | + fprintf(stdout, " %02x", ldub(ptr + i)); | |
872 | + } | |
873 | + fprintf(stdout, "\n"); | |
874 | + } | |
875 | +#endif | |
876 | + } | |
854 | 877 | count++; |
855 | 878 | } |
856 | 879 | } |
857 | - if ((env->cr[0] & CR0_PE_MASK) && intno == 0x10) { | |
858 | - tb_flush(env); | |
859 | - cpu_set_log(CPU_LOG_ALL); | |
860 | - } | |
861 | 880 | #endif |
881 | + | |
862 | 882 | #ifdef DEBUG_PCALL |
863 | 883 | if (loglevel) { |
864 | 884 | static int count; |
865 | 885 | fprintf(logfile, "%d: interrupt: vector=%02x error_code=%04x int=%d\n", |
866 | 886 | count, intno, error_code, is_int); |
867 | 887 | cpu_x86_dump_state(env, logfile, X86_DUMP_CCOP); |
868 | -#if 1 | |
888 | +#if 0 | |
869 | 889 | { |
870 | 890 | int i; |
871 | 891 | uint8_t *ptr; |
... | ... | @@ -2431,10 +2451,6 @@ void tlb_fill(unsigned long addr, int is_write, int is_user, void *retaddr) |
2431 | 2451 | generated code */ |
2432 | 2452 | saved_env = env; |
2433 | 2453 | env = cpu_single_env; |
2434 | - if (is_write && page_unprotect(addr)) { | |
2435 | - /* nothing more to do: the page was write protected because | |
2436 | - there was code in it. page_unprotect() flushed the code. */ | |
2437 | - } | |
2438 | 2454 | |
2439 | 2455 | ret = cpu_x86_handle_mmu_fault(env, addr, is_write, is_user, 1); |
2440 | 2456 | if (ret) { | ... | ... |