Mercurial > ecos
diff packages/cygmon/current/misc/monitor_cmd.c @ 115:6ed91473a1cd ecos-sw-2000-08-21
Merge from eCos master repository on 2000-08-21-22:40:54-BST
| author | jlarmour |
|---|---|
| date | Fri, 25 Aug 2000 17:32:38 +0000 |
| parents | 02ea4320376c |
| children | eb9fd8c04db3 |
line wrap: on
line diff
--- a/packages/cygmon/current/misc/monitor_cmd.c +++ b/packages/cygmon/current/misc/monitor_cmd.c @@ -32,7 +32,7 @@ //#####DESCRIPTIONBEGIN#### // // Author(s): -// Contributors: gthomas +// Contributors: gthomas, dmoseley // Date: 1999-10-20 // Purpose: Monitor commands for the CygMON ROM monitor // Description: @@ -721,8 +721,16 @@ display_memory (char *value, int size, i int end = littleEndian ? -1 : size; int incr = littleEndian ? -1 : 1; - for (x = start; x != end; x += incr) - xprintf ("%02x", value[x] & 0xff); + if (value) + { + for (x = start; x != end; x += incr) + xprintf ("%02x", value[x] & 0xff); + } + else + { + for (x = start; x != end; x += incr) + xprintf (".."); + } } @@ -929,15 +937,23 @@ Displays 16 bytes starting with 44f0 and addr2str (&addr, buf); xprintf("%s: ", buf); } - read_memory (&addr, size, 1, value); - display_memory (value, size, get_memory_display_mode ()); - xprintf (" "); - for (i = 0; i < size; i++) - { - chardumps[offset + i] = value[i] & 0x7f; - if (chardumps[offset + i] < 32) - chardumps[offset + i] = '.'; - } + if (read_memory (&addr, size, 1, value)) + { + display_memory (0, size, get_memory_display_mode ()); + for (i = 0; i < size; i++) + { + value[i] = 0; + } + } else { + display_memory (value, size, get_memory_display_mode ()); + } + xprintf (" "); + for (i = 0; i < size; i++) + { + chardumps[offset + i] = value[i] & 0x7f; + if (chardumps[offset + i] < 32) + chardumps[offset + i] = '.'; + } } xprintf (" "); for(i = 0; i < offset; i++) @@ -1259,9 +1275,15 @@ display_group (int which_group) else if (!skipping_group) { +#ifdef REG_VALID_FIELD_IN_REGSTRUCT +#define REGVALID_VAL regtab[i].registervalid +#else +#define REGVALID_VAL 1 +#endif xsprintf(buf, "%4s: %s", regtab[i].registername, - get_register_str (regtab[i].registernumber, 0)); + get_register_str (regtab[i].registernumber, 0 , REGVALID_VAL)); +#undef REGVALID_VAL buflen = strlen (buf); if ((buflen + len + 3) >= 80) { @@ -1314,8 +1336,14 @@ getregister (void) } else { +#ifdef REG_VALID_FIELD_IN_REGSTRUCT +#define REGVALID_VAL regtab[i].registervalid +#else +#define REGVALID_VAL 1 +#endif xprintf("%s: %s\n", argvect[1], - get_register_str (regtab[i].registernumber, 1)); + get_register_str (regtab[i].registernumber, 1, REGVALID_VAL)); +#undef REGVALID_VAL } } } @@ -2057,8 +2085,16 @@ Copies 0x300 bytes of memory from 0x1000 char buf[128]; int msize = (size > 128) ? 128 : size; - read_memory (&src, 1, msize, buf); - write_memory (&dst, 1, msize, buf); + if (read_memory (&src, 1, msize, buf)) + { + xprintf ("Memory read failed\n"); + break; + } + if (write_memory (&dst, 1, msize, buf)) + { + xprintf ("Memory write failed\n"); + break; + } ADD_OFFSET (&src, &src, msize); ADD_OFFSET (&dst, &dst, msize); size -= msize;
