diff options
author | Ben Widawsky <ben@bwidawsk.net> | 2012-08-23 11:29:43 -0700 |
---|---|---|
committer | Ben Widawsky <ben@bwidawsk.net> | 2012-08-23 11:29:43 -0700 |
commit | baf026d692c25969c3a30fcd50394c83f3f20815 (patch) | |
tree | 99cc8b2842c0d3cc4f953e340f7944d1f8cf67bb /tools/intel_reg_read.c | |
parent | 4fc76adf313f2792b7438f9372321ce3ea66c6c2 (diff) |
intel_reg_read: support -c option to read multiple dwords
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Diffstat (limited to 'tools/intel_reg_read.c')
-rw-r--r-- | tools/intel_reg_read.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/tools/intel_reg_read.c b/tools/intel_reg_read.c index 6187a4be4..ee6f126c5 100644 --- a/tools/intel_reg_read.c +++ b/tools/intel_reg_read.c @@ -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", ®); - dump_range(reg, reg + 4); + dump_range(reg, reg + (dwords * 4)); if (decode_bits) bit_decode(*(volatile uint32_t *)((volatile char*)mmio + reg)); |