[PATCH] powerpc: add a raw dump command to xmon
Dump a stream of rawbytes with a new 'dr' command. Produces less output and it is simpler to feed the output to scripts. Also, dr has no dumpsize limits. Signed-off-by: Olaf Hering <olh@suse.de> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
e33852228f
commit
7e5b59384e
1 changed files with 30 additions and 0 deletions
|
@ -191,6 +191,7 @@ Commands:\n\
|
|||
di dump instructions\n\
|
||||
df dump float values\n\
|
||||
dd dump double values\n\
|
||||
dr dump stream of raw bytes\n\
|
||||
e print exception information\n\
|
||||
f flush cache\n\
|
||||
la lookup symbol+offset of specified address\n\
|
||||
|
@ -1938,6 +1939,28 @@ bsesc(void)
|
|||
return c;
|
||||
}
|
||||
|
||||
static void xmon_rawdump (unsigned long adrs, long ndump)
|
||||
{
|
||||
long n, m, r, nr;
|
||||
unsigned char temp[16];
|
||||
|
||||
for (n = ndump; n > 0;) {
|
||||
r = n < 16? n: 16;
|
||||
nr = mread(adrs, temp, r);
|
||||
adrs += nr;
|
||||
for (m = 0; m < r; ++m) {
|
||||
if (m < nr)
|
||||
printf("%.2x", temp[m]);
|
||||
else
|
||||
printf("%s", fault_chars[fault_type]);
|
||||
}
|
||||
n -= r;
|
||||
if (nr < r)
|
||||
break;
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
#define isxdigit(c) (('0' <= (c) && (c) <= '9') \
|
||||
|| ('a' <= (c) && (c) <= 'f') \
|
||||
|| ('A' <= (c) && (c) <= 'F'))
|
||||
|
@ -1960,6 +1983,13 @@ dump(void)
|
|||
nidump = MAX_DUMP;
|
||||
adrs += ppc_inst_dump(adrs, nidump, 1);
|
||||
last_cmd = "di\n";
|
||||
} else if (c == 'r') {
|
||||
scanhex(&ndump);
|
||||
if (ndump == 0)
|
||||
ndump = 64;
|
||||
xmon_rawdump(adrs, ndump);
|
||||
adrs += ndump;
|
||||
last_cmd = "dr\n";
|
||||
} else {
|
||||
scanhex(&ndump);
|
||||
if (ndump == 0)
|
||||
|
|
Loading…
Reference in a new issue