Commit e19e89a5d4e9416f054116765fc0c2674ddd371f
1 parent
f193c797
more log items
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@676 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
6 changed files
with
68 additions
and
73 deletions
linux-user/main.c
@@ -847,7 +847,18 @@ int main(int argc, char **argv) | @@ -847,7 +847,18 @@ int main(int argc, char **argv) | ||
847 | if (!strcmp(r, "-")) { | 847 | if (!strcmp(r, "-")) { |
848 | break; | 848 | break; |
849 | } else if (!strcmp(r, "d")) { | 849 | } else if (!strcmp(r, "d")) { |
850 | - cpu_set_log(CPU_LOG_ALL); | 850 | + int mask; |
851 | + CPULogItem *item; | ||
852 | + | ||
853 | + mask = cpu_str_to_log_mask(optarg); | ||
854 | + if (!mask) { | ||
855 | + printf("Log items (comma separated):\n"); | ||
856 | + for(item = cpu_log_items; item->mask != 0; item++) { | ||
857 | + printf("%-10s %s\n", item->name, item->help); | ||
858 | + } | ||
859 | + exit(1); | ||
860 | + } | ||
861 | + cpu_set_log(mask); | ||
851 | } else if (!strcmp(r, "s")) { | 862 | } else if (!strcmp(r, "s")) { |
852 | r = argv[optind++]; | 863 | r = argv[optind++]; |
853 | x86_stack_size = strtol(r, (char **)&r, 0); | 864 | x86_stack_size = strtol(r, (char **)&r, 0); |
target-arm/translate.c
@@ -777,15 +777,16 @@ static inline int gen_intermediate_code_internal(CPUState *env, | @@ -777,15 +777,16 @@ static inline int gen_intermediate_code_internal(CPUState *env, | ||
777 | *gen_opc_ptr = INDEX_op_end; | 777 | *gen_opc_ptr = INDEX_op_end; |
778 | 778 | ||
779 | #ifdef DEBUG_DISAS | 779 | #ifdef DEBUG_DISAS |
780 | - if (loglevel) { | 780 | + if (loglevel & CPU_LOG_TB_IN_ASM) { |
781 | fprintf(logfile, "----------------\n"); | 781 | fprintf(logfile, "----------------\n"); |
782 | fprintf(logfile, "IN: %s\n", lookup_symbol(pc_start)); | 782 | fprintf(logfile, "IN: %s\n", lookup_symbol(pc_start)); |
783 | - disas(logfile, pc_start, dc->pc - pc_start, 0, 0); | ||
784 | - fprintf(logfile, "\n"); | ||
785 | - | ||
786 | - fprintf(logfile, "OP:\n"); | ||
787 | - dump_ops(gen_opc_buf, gen_opparam_buf); | 783 | + disas(logfile, pc_start, dc->pc - pc_start, 0, 0); |
788 | fprintf(logfile, "\n"); | 784 | fprintf(logfile, "\n"); |
785 | + if (loglevel & (CPU_LOG_TB_OP)) { | ||
786 | + fprintf(logfile, "OP:\n"); | ||
787 | + dump_ops(gen_opc_buf, gen_opparam_buf); | ||
788 | + fprintf(logfile, "\n"); | ||
789 | + } | ||
789 | } | 790 | } |
790 | #endif | 791 | #endif |
791 | if (!search_pc) | 792 | if (!search_pc) |
target-i386/helper.c
@@ -290,7 +290,7 @@ static void switch_tss(int tss_selector, | @@ -290,7 +290,7 @@ static void switch_tss(int tss_selector, | ||
290 | 290 | ||
291 | type = (e2 >> DESC_TYPE_SHIFT) & 0xf; | 291 | type = (e2 >> DESC_TYPE_SHIFT) & 0xf; |
292 | #ifdef DEBUG_PCALL | 292 | #ifdef DEBUG_PCALL |
293 | - if (loglevel) | 293 | + if (loglevel & CPU_LOG_PCALL) |
294 | fprintf(logfile, "switch_tss: sel=0x%04x type=%d src=%d\n", tss_selector, type, source); | 294 | fprintf(logfile, "switch_tss: sel=0x%04x type=%d src=%d\n", tss_selector, type, source); |
295 | #endif | 295 | #endif |
296 | 296 | ||
@@ -858,68 +858,43 @@ void do_interrupt_user(int intno, int is_int, int error_code, | @@ -858,68 +858,43 @@ void do_interrupt_user(int intno, int is_int, int error_code, | ||
858 | } | 858 | } |
859 | 859 | ||
860 | /* | 860 | /* |
861 | - * Begin excution of an interruption. is_int is TRUE if coming from | 861 | + * Begin execution of an interruption. is_int is TRUE if coming from |
862 | * the int instruction. next_eip is the EIP value AFTER the interrupt | 862 | * the int instruction. next_eip is the EIP value AFTER the interrupt |
863 | * instruction. It is only relevant if is_int is TRUE. | 863 | * instruction. It is only relevant if is_int is TRUE. |
864 | */ | 864 | */ |
865 | void do_interrupt(int intno, int is_int, int error_code, | 865 | void do_interrupt(int intno, int is_int, int error_code, |
866 | unsigned int next_eip, int is_hw) | 866 | unsigned int next_eip, int is_hw) |
867 | { | 867 | { |
868 | -#if 0 | ||
869 | - { | ||
870 | - extern FILE *stdout; | ||
871 | - static int count; | ||
872 | - if (env->cr[0] & CR0_PE_MASK) { | ||
873 | - fprintf(stdout, "%d: v=%02x e=%04x i=%d CPL=%d CS:EIP=%04x:%08x SS:ESP=%04x:%08x", | 868 | +#ifdef DEBUG_PCALL |
869 | + if (loglevel & (CPU_LOG_PCALL | CPU_LOG_INT)) { | ||
870 | + if ((env->cr[0] & CR0_PE_MASK)) { | ||
871 | + static int count; | ||
872 | + fprintf(logfile, "%6d: v=%02x e=%04x i=%d cpl=%d IP=%04x:%08x SP=%04x:%08x", | ||
874 | count, intno, error_code, is_int, | 873 | count, intno, error_code, is_int, |
875 | env->hflags & HF_CPL_MASK, | 874 | env->hflags & HF_CPL_MASK, |
876 | env->segs[R_CS].selector, EIP, | 875 | env->segs[R_CS].selector, EIP, |
877 | env->segs[R_SS].selector, ESP); | 876 | env->segs[R_SS].selector, ESP); |
878 | if (intno == 0x0e) { | 877 | if (intno == 0x0e) { |
879 | - fprintf(stdout, " CR2=%08x", env->cr[2]); | 878 | + fprintf(logfile, " CR2=%08x", env->cr[2]); |
880 | } else { | 879 | } else { |
881 | - fprintf(stdout, " EAX=%08x", env->regs[R_EAX]); | 880 | + fprintf(logfile, " EAX=%08x", env->regs[R_EAX]); |
882 | } | 881 | } |
883 | - fprintf(stdout, "\n"); | ||
884 | - | ||
885 | - if (0) { | ||
886 | - cpu_x86_dump_state(env, stdout, X86_DUMP_CCOP); | 882 | + fprintf(logfile, "\n"); |
887 | #if 0 | 883 | #if 0 |
888 | - { | ||
889 | - int i; | ||
890 | - uint8_t *ptr; | ||
891 | - fprintf(stdout, " code="); | ||
892 | - ptr = env->segs[R_CS].base + env->eip; | ||
893 | - for(i = 0; i < 16; i++) { | ||
894 | - fprintf(stdout, " %02x", ldub(ptr + i)); | ||
895 | - } | ||
896 | - fprintf(stdout, "\n"); | 884 | + cpu_x86_dump_state(env, logfile, X86_DUMP_CCOP); |
885 | + { | ||
886 | + int i; | ||
887 | + uint8_t *ptr; | ||
888 | + fprintf(logfile, " code="); | ||
889 | + ptr = env->segs[R_CS].base + env->eip; | ||
890 | + for(i = 0; i < 16; i++) { | ||
891 | + fprintf(logfile, " %02x", ldub(ptr + i)); | ||
897 | } | 892 | } |
898 | -#endif | 893 | + fprintf(logfile, "\n"); |
899 | } | 894 | } |
900 | - count++; | ||
901 | - } | ||
902 | - } | ||
903 | #endif | 895 | #endif |
904 | -#ifdef DEBUG_PCALL | ||
905 | - if (loglevel) { | ||
906 | - static int count; | ||
907 | - fprintf(logfile, "%d: interrupt: vector=%02x error_code=%04x int=%d\n", | ||
908 | - count, intno, error_code, is_int); | ||
909 | - cpu_x86_dump_state(env, logfile, X86_DUMP_CCOP); | ||
910 | -#if 0 | ||
911 | - { | ||
912 | - int i; | ||
913 | - uint8_t *ptr; | ||
914 | - fprintf(logfile, " code="); | ||
915 | - ptr = env->segs[R_CS].base + env->eip; | ||
916 | - for(i = 0; i < 16; i++) { | ||
917 | - fprintf(logfile, " %02x", ldub(ptr + i)); | ||
918 | - } | ||
919 | - fprintf(logfile, "\n"); | 896 | + count++; |
920 | } | 897 | } |
921 | -#endif | ||
922 | - count++; | ||
923 | } | 898 | } |
924 | #endif | 899 | #endif |
925 | if (env->cr[0] & CR0_PE_MASK) { | 900 | if (env->cr[0] & CR0_PE_MASK) { |
@@ -1365,9 +1340,9 @@ void helper_lcall_protected_T0_T1(int shift, int next_eip) | @@ -1365,9 +1340,9 @@ void helper_lcall_protected_T0_T1(int shift, int next_eip) | ||
1365 | new_cs = T0; | 1340 | new_cs = T0; |
1366 | new_eip = T1; | 1341 | new_eip = T1; |
1367 | #ifdef DEBUG_PCALL | 1342 | #ifdef DEBUG_PCALL |
1368 | - if (loglevel) { | ||
1369 | - fprintf(logfile, "lcall %04x:%08x\n", | ||
1370 | - new_cs, new_eip); | 1343 | + if (loglevel & CPU_LOG_PCALL) { |
1344 | + fprintf(logfile, "lcall %04x:%08x s=%d\n", | ||
1345 | + new_cs, new_eip, shift); | ||
1371 | cpu_x86_dump_state(env, logfile, X86_DUMP_CCOP); | 1346 | cpu_x86_dump_state(env, logfile, X86_DUMP_CCOP); |
1372 | } | 1347 | } |
1373 | #endif | 1348 | #endif |
@@ -1377,7 +1352,7 @@ void helper_lcall_protected_T0_T1(int shift, int next_eip) | @@ -1377,7 +1352,7 @@ void helper_lcall_protected_T0_T1(int shift, int next_eip) | ||
1377 | raise_exception_err(EXCP0D_GPF, new_cs & 0xfffc); | 1352 | raise_exception_err(EXCP0D_GPF, new_cs & 0xfffc); |
1378 | cpl = env->hflags & HF_CPL_MASK; | 1353 | cpl = env->hflags & HF_CPL_MASK; |
1379 | #ifdef DEBUG_PCALL | 1354 | #ifdef DEBUG_PCALL |
1380 | - if (loglevel) { | 1355 | + if (loglevel & CPU_LOG_PCALL) { |
1381 | fprintf(logfile, "desc=%08x:%08x\n", e1, e2); | 1356 | fprintf(logfile, "desc=%08x:%08x\n", e1, e2); |
1382 | } | 1357 | } |
1383 | #endif | 1358 | #endif |
@@ -1466,8 +1441,8 @@ void helper_lcall_protected_T0_T1(int shift, int next_eip) | @@ -1466,8 +1441,8 @@ void helper_lcall_protected_T0_T1(int shift, int next_eip) | ||
1466 | /* to inner priviledge */ | 1441 | /* to inner priviledge */ |
1467 | get_ss_esp_from_tss(&ss, &sp, dpl); | 1442 | get_ss_esp_from_tss(&ss, &sp, dpl); |
1468 | #ifdef DEBUG_PCALL | 1443 | #ifdef DEBUG_PCALL |
1469 | - if (loglevel) | ||
1470 | - fprintf(logfile, "ss=%04x sp=%04x param_count=%d ESP=%x\n", | 1444 | + if (loglevel & CPU_LOG_PCALL) |
1445 | + fprintf(logfile, "new ss:esp=%04x:%08x param_count=%d ESP=%x\n", | ||
1471 | ss, sp, param_count, ESP); | 1446 | ss, sp, param_count, ESP); |
1472 | #endif | 1447 | #endif |
1473 | if ((ss & 0xfffc) == 0) | 1448 | if ((ss & 0xfffc) == 0) |
@@ -1626,9 +1601,9 @@ static inline void helper_ret_protected(int shift, int is_iret, int addend) | @@ -1626,9 +1601,9 @@ static inline void helper_ret_protected(int shift, int is_iret, int addend) | ||
1626 | POPW(ssp, sp, sp_mask, new_eflags); | 1601 | POPW(ssp, sp, sp_mask, new_eflags); |
1627 | } | 1602 | } |
1628 | #ifdef DEBUG_PCALL | 1603 | #ifdef DEBUG_PCALL |
1629 | - if (loglevel) { | ||
1630 | - fprintf(logfile, "lret new %04x:%08x addend=0x%x\n", | ||
1631 | - new_cs, new_eip, addend); | 1604 | + if (loglevel & CPU_LOG_PCALL) { |
1605 | + fprintf(logfile, "lret new %04x:%08x s=%d addend=0x%x\n", | ||
1606 | + new_cs, new_eip, shift, addend); | ||
1632 | cpu_x86_dump_state(env, logfile, X86_DUMP_CCOP); | 1607 | cpu_x86_dump_state(env, logfile, X86_DUMP_CCOP); |
1633 | } | 1608 | } |
1634 | #endif | 1609 | #endif |
@@ -1673,6 +1648,12 @@ static inline void helper_ret_protected(int shift, int is_iret, int addend) | @@ -1673,6 +1648,12 @@ static inline void helper_ret_protected(int shift, int is_iret, int addend) | ||
1673 | POPW(ssp, sp, sp_mask, new_esp); | 1648 | POPW(ssp, sp, sp_mask, new_esp); |
1674 | POPW(ssp, sp, sp_mask, new_ss); | 1649 | POPW(ssp, sp, sp_mask, new_ss); |
1675 | } | 1650 | } |
1651 | +#ifdef DEBUG_PCALL | ||
1652 | + if (loglevel & CPU_LOG_PCALL) { | ||
1653 | + fprintf(logfile, "new ss:esp=%04x:%08x\n", | ||
1654 | + new_ss, new_esp); | ||
1655 | + } | ||
1656 | +#endif | ||
1676 | 1657 | ||
1677 | if ((new_ss & 3) != rpl) | 1658 | if ((new_ss & 3) != rpl) |
1678 | raise_exception_err(EXCP0D_GPF, new_ss & 0xfffc); | 1659 | raise_exception_err(EXCP0D_GPF, new_ss & 0xfffc); |
target-i386/translate-copy.c
@@ -1237,7 +1237,7 @@ static inline int gen_intermediate_code_internal(CPUState *env, | @@ -1237,7 +1237,7 @@ static inline int gen_intermediate_code_internal(CPUState *env, | ||
1237 | } | 1237 | } |
1238 | 1238 | ||
1239 | #ifdef DEBUG_DISAS | 1239 | #ifdef DEBUG_DISAS |
1240 | - if (loglevel) { | 1240 | + if (loglevel & CPU_LOG_TB_IN_ASM) { |
1241 | fprintf(logfile, "----------------\n"); | 1241 | fprintf(logfile, "----------------\n"); |
1242 | fprintf(logfile, "IN: COPY: %s fpu=%d\n", | 1242 | fprintf(logfile, "IN: COPY: %s fpu=%d\n", |
1243 | lookup_symbol(pc_start), | 1243 | lookup_symbol(pc_start), |
target-i386/translate.c
@@ -4595,16 +4595,16 @@ static inline int gen_intermediate_code_internal(CPUState *env, | @@ -4595,16 +4595,16 @@ static inline int gen_intermediate_code_internal(CPUState *env, | ||
4595 | } | 4595 | } |
4596 | 4596 | ||
4597 | #ifdef DEBUG_DISAS | 4597 | #ifdef DEBUG_DISAS |
4598 | - if (loglevel) { | 4598 | + if (loglevel & CPU_LOG_TB_IN_ASM) { |
4599 | fprintf(logfile, "----------------\n"); | 4599 | fprintf(logfile, "----------------\n"); |
4600 | fprintf(logfile, "IN: %s\n", lookup_symbol(pc_start)); | 4600 | fprintf(logfile, "IN: %s\n", lookup_symbol(pc_start)); |
4601 | disas(logfile, pc_start, pc_ptr - pc_start, 0, !dc->code32); | 4601 | disas(logfile, pc_start, pc_ptr - pc_start, 0, !dc->code32); |
4602 | fprintf(logfile, "\n"); | 4602 | fprintf(logfile, "\n"); |
4603 | -#if 0 | ||
4604 | - fprintf(logfile, "OP:\n"); | ||
4605 | - dump_ops(gen_opc_buf, gen_opparam_buf); | ||
4606 | - fprintf(logfile, "\n"); | ||
4607 | -#endif | 4603 | + if (loglevel & CPU_LOG_TB_OP) { |
4604 | + fprintf(logfile, "OP:\n"); | ||
4605 | + dump_ops(gen_opc_buf, gen_opparam_buf); | ||
4606 | + fprintf(logfile, "\n"); | ||
4607 | + } | ||
4608 | } | 4608 | } |
4609 | #endif | 4609 | #endif |
4610 | 4610 | ||
@@ -4612,7 +4612,7 @@ static inline int gen_intermediate_code_internal(CPUState *env, | @@ -4612,7 +4612,7 @@ static inline int gen_intermediate_code_internal(CPUState *env, | ||
4612 | optimize_flags(gen_opc_buf, gen_opc_ptr - gen_opc_buf); | 4612 | optimize_flags(gen_opc_buf, gen_opc_ptr - gen_opc_buf); |
4613 | 4613 | ||
4614 | #ifdef DEBUG_DISAS | 4614 | #ifdef DEBUG_DISAS |
4615 | - if (loglevel) { | 4615 | + if (loglevel & CPU_LOG_TB_OP_OPT) { |
4616 | fprintf(logfile, "AFTER FLAGS OPT:\n"); | 4616 | fprintf(logfile, "AFTER FLAGS OPT:\n"); |
4617 | dump_ops(gen_opc_buf, gen_opparam_buf); | 4617 | dump_ops(gen_opc_buf, gen_opparam_buf); |
4618 | fprintf(logfile, "\n"); | 4618 | fprintf(logfile, "\n"); |
target-sparc/translate.c
@@ -800,14 +800,16 @@ static inline int gen_intermediate_code_internal(TranslationBlock * tb, | @@ -800,14 +800,16 @@ static inline int gen_intermediate_code_internal(TranslationBlock * tb, | ||
800 | } | 800 | } |
801 | *gen_opc_ptr = INDEX_op_end; | 801 | *gen_opc_ptr = INDEX_op_end; |
802 | #ifdef DEBUG_DISAS | 802 | #ifdef DEBUG_DISAS |
803 | - if (loglevel) { | 803 | + if (loglevel & CPU_LOG_TB_IN_ASM) { |
804 | fprintf(logfile, "--------------\n"); | 804 | fprintf(logfile, "--------------\n"); |
805 | fprintf(logfile, "IN: %s\n", lookup_symbol((uint8_t *)pc_start)); | 805 | fprintf(logfile, "IN: %s\n", lookup_symbol((uint8_t *)pc_start)); |
806 | disas(logfile, (uint8_t *)pc_start, last_pc + 4 - pc_start, 0, 0); | 806 | disas(logfile, (uint8_t *)pc_start, last_pc + 4 - pc_start, 0, 0); |
807 | fprintf(logfile, "\n"); | 807 | fprintf(logfile, "\n"); |
808 | - fprintf(logfile, "OP:\n"); | ||
809 | - dump_ops(gen_opc_buf, gen_opparam_buf); | ||
810 | - fprintf(logfile, "\n"); | 808 | + if (loglevel & CPU_LOG_TB_OP) { |
809 | + fprintf(logfile, "OP:\n"); | ||
810 | + dump_ops(gen_opc_buf, gen_opparam_buf); | ||
811 | + fprintf(logfile, "\n"); | ||
812 | + } | ||
811 | } | 813 | } |
812 | #endif | 814 | #endif |
813 | 815 |