Commit e4cf1adc806f24d26756fa828e0d7b515a06752d
1 parent
72cc6cfe
added sum command
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1434 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
18 additions
and
0 deletions
monitor.c
... | ... | @@ -562,6 +562,22 @@ static void do_print(int count, int format, int size, unsigned int valh, unsigne |
562 | 562 | term_printf("\n"); |
563 | 563 | } |
564 | 564 | |
565 | +static void do_sum(uint32_t start, uint32_t size) | |
566 | +{ | |
567 | + uint32_t addr; | |
568 | + uint8_t buf[1]; | |
569 | + uint16_t sum; | |
570 | + | |
571 | + sum = 0; | |
572 | + for(addr = start; addr < (start + size); addr++) { | |
573 | + cpu_physical_memory_rw(addr, buf, 1, 0); | |
574 | + /* BSD sum algorithm ('sum' Unix command) */ | |
575 | + sum = (sum >> 1) | (sum << 15); | |
576 | + sum += buf[0]; | |
577 | + } | |
578 | + term_printf("%05d\n", sum); | |
579 | +} | |
580 | + | |
565 | 581 | typedef struct { |
566 | 582 | int keycode; |
567 | 583 | const char *name; |
... | ... | @@ -906,6 +922,8 @@ static term_cmd_t term_cmds[] = { |
906 | 922 | "keys", "send keys to the VM (e.g. 'sendkey ctrl-alt-f1')" }, |
907 | 923 | { "system_reset", "", do_system_reset, |
908 | 924 | "", "reset the system" }, |
925 | + { "sum", "ii", do_sum, | |
926 | + "addr size", "compute the checksum of a memory region" }, | |
909 | 927 | { NULL, NULL, }, |
910 | 928 | }; |
911 | 929 | ... | ... |