intel_reg_read: support -c option to read multiple dwords

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
This commit is contained in:
Ben Widawsky 2012-08-23 11:29:43 -07:00
parent 4fc76adf31
commit baf026d692

View File

@ -60,6 +60,7 @@ static void usage(char *cmdname)
printf("\t -f : read back full range of registers.\n");
printf("\t WARNING! This option may result in a machine hang!\n");
printf("\t -d : decode register bits.\n");
printf("\t -c : number of dwords to dump (can't be used with -f/-d).\n");
printf("\t addr : in 0xXXXX format\n");
}
@ -71,8 +72,9 @@ int main(int argc, char** argv)
char *cmdname = strdup(argv[0]);
int full_dump = 0;
int decode_bits = 0;
int dwords = 1;
while ((ch = getopt(argc, argv, "dfh")) != -1) {
while ((ch = getopt(argc, argv, "dfhc:")) != -1) {
switch(ch) {
case 'd':
decode_bits = 1;
@ -84,6 +86,9 @@ int main(int argc, char** argv)
usage(cmdname);
ret = 1;
goto out;
case 'c':
dwords = atoi(optarg);
break;
}
}
argc -= optind;
@ -95,6 +100,12 @@ int main(int argc, char** argv)
goto out;
}
if ((dwords > 1) && (argc != 1 || full_dump || decode_bits)) {
usage(cmdname);
ret = 1;
goto out;
}
intel_register_access_init(intel_get_pci_device(), 0);
if (full_dump) {
@ -115,7 +126,7 @@ int main(int argc, char** argv)
} else {
for (i=0; i < argc; i++) {
sscanf(argv[i], "0x%x", &reg);
dump_range(reg, reg + 4);
dump_range(reg, reg + (dwords * 4));
if (decode_bits)
bit_decode(*(volatile uint32_t *)((volatile char*)mmio + reg));