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) { | ... | ... |