Commit 4c27ba27c5dd810fdcfbe82e3998a174a6e793f2
1 parent
ba91cd80
added 'info pic' - added 16/32 bit x86 instruction dump
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@750 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
22 additions
and
6 deletions
monitor.c
| @@ -350,10 +350,17 @@ static void memory_dump(int count, int format, int wsize, | @@ -350,10 +350,17 @@ static void memory_dump(int count, int format, int wsize, | ||
| 350 | int flags; | 350 | int flags; |
| 351 | flags = 0; | 351 | flags = 0; |
| 352 | #ifdef TARGET_I386 | 352 | #ifdef TARGET_I386 |
| 353 | - /* we use the current CS size */ | ||
| 354 | - if (!(cpu_single_env->segs[R_CS].flags & DESC_B_MASK)) | 353 | + if (wsize == 2) { |
| 355 | flags = 1; | 354 | flags = 1; |
| 356 | -#endif | 355 | + } else if (wsize == 4) { |
| 356 | + flags = 0; | ||
| 357 | + } else { | ||
| 358 | + /* as default we use the current CS size */ | ||
| 359 | + flags = 0; | ||
| 360 | + if (!(cpu_single_env->segs[R_CS].flags & DESC_B_MASK)) | ||
| 361 | + flags = 1; | ||
| 362 | + } | ||
| 363 | +#endif | ||
| 357 | monitor_disas(addr, count, is_physical, flags); | 364 | monitor_disas(addr, count, is_physical, flags); |
| 358 | return; | 365 | return; |
| 359 | } | 366 | } |
| @@ -516,6 +523,8 @@ static term_cmd_t info_cmds[] = { | @@ -516,6 +523,8 @@ static term_cmd_t info_cmds[] = { | ||
| 516 | "", "show the cpu registers" }, | 523 | "", "show the cpu registers" }, |
| 517 | { "history", "", do_info_history, | 524 | { "history", "", do_info_history, |
| 518 | "", "show the command line history", }, | 525 | "", "show the command line history", }, |
| 526 | + { "pic", "", pic_info, | ||
| 527 | + "", "show i8259 (PIC) state", }, | ||
| 519 | { NULL, NULL, }, | 528 | { NULL, NULL, }, |
| 520 | }; | 529 | }; |
| 521 | 530 | ||
| @@ -1047,16 +1056,23 @@ static void term_handle_command(const char *cmdline) | @@ -1047,16 +1056,23 @@ static void term_handle_command(const char *cmdline) | ||
| 1047 | term_printf("invalid char in format: '%c'\n", *p); | 1056 | term_printf("invalid char in format: '%c'\n", *p); |
| 1048 | goto fail; | 1057 | goto fail; |
| 1049 | } | 1058 | } |
| 1050 | - if (size < 0) | ||
| 1051 | - size = default_fmt_size; | ||
| 1052 | if (format < 0) | 1059 | if (format < 0) |
| 1053 | format = default_fmt_format; | 1060 | format = default_fmt_format; |
| 1061 | + if (format != 'i') { | ||
| 1062 | + /* for 'i', not specifying a size gives -1 as size */ | ||
| 1063 | + if (size < 0) | ||
| 1064 | + size = default_fmt_size; | ||
| 1065 | + } | ||
| 1054 | default_fmt_size = size; | 1066 | default_fmt_size = size; |
| 1055 | default_fmt_format = format; | 1067 | default_fmt_format = format; |
| 1056 | } else { | 1068 | } else { |
| 1057 | count = 1; | 1069 | count = 1; |
| 1058 | format = default_fmt_format; | 1070 | format = default_fmt_format; |
| 1059 | - size = default_fmt_size; | 1071 | + if (format != 'i') { |
| 1072 | + size = default_fmt_size; | ||
| 1073 | + } else { | ||
| 1074 | + size = -1; | ||
| 1075 | + } | ||
| 1060 | } | 1076 | } |
| 1061 | if (nb_args + 3 > MAX_ARGS) | 1077 | if (nb_args + 3 > MAX_ARGS) |
| 1062 | goto error_args; | 1078 | goto error_args; |