msrtool: Allow MSR symbols (names) to also be used as addresses.
Thanks for the idea Mart! Signed-off-by: Peter Stuge <peter@stuge.se> Acked-by: Peter Stuge <peter@stuge.se> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3921 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
c1d6ed9a21
commit
3108a12e9b
|
@ -278,7 +278,7 @@ int main(int argc, char *argv[]) {
|
|||
break;
|
||||
case 'i':
|
||||
input = 1;
|
||||
addr = strtoul(optarg, NULL, 16);
|
||||
addr = msraddrbyname(optarg);
|
||||
optarg = strchr(optarg, '=');
|
||||
if (NULL == optarg) {
|
||||
fprintf(stderr, "missing value in -i argument!\n");
|
||||
|
@ -398,7 +398,7 @@ int main(int argc, char *argv[]) {
|
|||
}
|
||||
|
||||
for (; optind < argc; optind++) {
|
||||
addr = strtoul(argv[optind], NULL, 16);
|
||||
addr = msraddrbyname(argv[optind]);
|
||||
if (!sys->rdmsr(cpu, addr, &msrval))
|
||||
break;
|
||||
decodemsr(cpu, addr, msrval);
|
||||
|
|
|
@ -157,6 +157,7 @@ struct msr msr_shl(const struct msr a, const uint8_t bits);
|
|||
struct msr msr_shr(const struct msr a, const uint8_t bits);
|
||||
void msr_and(struct msr *a, const struct msr b);
|
||||
const struct msrdef *findmsrdef(const uint32_t addr);
|
||||
const uint32_t msraddrbyname(const char *name);
|
||||
void dumpmsrdefs(const struct targetdef *t);
|
||||
int dumpmsrdefsvals(FILE *f, const struct targetdef *t, const uint8_t cpu);
|
||||
uint8_t str2msr(char *str, struct msr *msr);
|
||||
|
|
|
@ -137,6 +137,22 @@ const struct msrdef *findmsrdef(const uint32_t addr) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
const uint32_t msraddrbyname(const char *name) {
|
||||
uint8_t t;
|
||||
const uint32_t addr = strtoul(name, NULL, 16);
|
||||
const struct msrdef *m;
|
||||
if (!targets)
|
||||
return 0;
|
||||
for (t = 0; t < targets_found; t++)
|
||||
for (m = targets[t]->msrs; !MSR_ISEOT(*m); m++) {
|
||||
if (addr == m->addr)
|
||||
return m->addr;
|
||||
if (!strcasecmp(name, m->symbol))
|
||||
return m->addr;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void dumpmsrdefs(const struct targetdef *t) {
|
||||
const struct msrdef *m;
|
||||
const struct msrbits *mb;
|
||||
|
|
Loading…
Reference in New Issue