diff options
author | Damien Lespiau <damien.lespiau@intel.com> | 2012-09-03 16:16:29 +0100 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-09-04 13:55:10 +0200 |
commit | c8b93b8b7738f74e710bcbe8a7015ee3eaad3aa1 (patch) | |
tree | 7d9d4e4801551e94c37fd294f278e915cefdf429 /tools | |
parent | 62a026eac5de8ed2acfe26161c718eb51fc537f0 (diff) |
intel_reg_dumper: Add more information when dumping single registers
Now that we can dump registers giving a partial name, adding more
information about the dumped registers seems useful.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/intel_reg_dumper.c | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/tools/intel_reg_dumper.c b/tools/intel_reg_dumper.c index 0b40f588..f04702c6 100644 --- a/tools/intel_reg_dumper.c +++ b/tools/intel_reg_dumper.c @@ -27,6 +27,7 @@ #define _GNU_SOURCE #include <ctype.h> +#include <stdbool.h> #include <stdlib.h> #include <stdio.h> #include <string.h> @@ -1970,20 +1971,37 @@ static struct reg_debug gen6_rp_debug_regs[] = { DEFINEREG(GEN6_PMINTRMSK), }; -#define DECLARE_REGS(r) { .regs = r, .count = ARRAY_SIZE(r) } +#define DECLARE_REGS(d,r) \ + { .description = d, .regs = r, .count = ARRAY_SIZE(r) } static struct { + const char *description; struct reg_debug *regs; int count; } known_registers[] = { - DECLARE_REGS(ironlake_debug_regs), - DECLARE_REGS(i945gm_mi_regs), - DECLARE_REGS(intel_debug_regs), - DECLARE_REGS(gen6_rp_debug_regs), - DECLARE_REGS(haswell_debug_regs) + DECLARE_REGS("Gen5", ironlake_debug_regs), + DECLARE_REGS("i945GM", i945gm_mi_regs), + DECLARE_REGS("Gen2", intel_debug_regs), + DECLARE_REGS("Gen6", gen6_rp_debug_regs), + DECLARE_REGS("Gen7.5", haswell_debug_regs) }; #undef DECLARE_REGS static void +dump_reg(struct reg_debug *reg, uint32_t val, const char *prefix) +{ + char debug[1024]; + + if (reg->debug_output != NULL) { + reg->debug_output(debug, sizeof(debug), reg->reg, val); + printf("%s: %s (0x%x): 0x%08x (%s)\n", + prefix, reg->name, reg->reg, val, debug); + } else { + printf("%s: %s (0x%x): 0x%08x\n", + prefix, reg->name, reg->reg, val); + } +} + +static void str_to_upper(char *str) { while(*str) { @@ -2004,7 +2022,8 @@ decode_register_name(char *name, uint32_t val) for (j = 0; j < known_registers[i].count; j++) if (strstr(regs[j].name, name)) - _intel_dump_reg(®s[j], val); + dump_reg(®s[j], val, + known_registers[i].description); } } @@ -2018,7 +2037,8 @@ decode_register_address(int address, uint32_t val) for (j = 0; j < known_registers[i].count; j++) if (regs[j].reg == address) - _intel_dump_reg(®s[j], val); + dump_reg(®s[j], val, + known_registers[i].description); } } |