Skip to content

Commit 46b5f91

Browse files
committed
Display register numbers in a more usable format.
1 parent 73dee3a commit 46b5f91

File tree

2 files changed

+55
-4
lines changed

2 files changed

+55
-4
lines changed

src/target/riscv/gdb_regs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,6 @@ enum gdb_regno {
2525
GDB_REGNO_COUNT
2626
};
2727

28+
const char *gdb_regno_name(enum gdb_regno regno);
29+
2830
#endif

src/target/riscv/riscv.c

Lines changed: 53 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ static int add_trigger(struct target *target, struct trigger *trigger)
437437
continue;
438438
}
439439

440-
LOG_DEBUG("Using resource %d for bp %d", i,
440+
LOG_DEBUG("Using trigger %d (type %d) for bp %d", i, type,
441441
trigger->unique_id);
442442
r->trigger_unique_id[i] = trigger->unique_id;
443443
break;
@@ -1406,7 +1406,7 @@ void riscv_set_register_on_hart(struct target *target, int hartid,
14061406
enum gdb_regno regid, uint64_t value)
14071407
{
14081408
RISCV_INFO(r);
1409-
LOG_DEBUG("[%d] reg[0x%x] <- %" PRIx64, hartid, regid, value);
1409+
LOG_DEBUG("[%d] %s <- %" PRIx64, hartid, gdb_regno_name(regid), value);
14101410
assert(r->set_register);
14111411
return r->set_register(target, hartid, regid, value);
14121412
}
@@ -1420,7 +1420,7 @@ uint64_t riscv_get_register_on_hart(struct target *target, int hartid, enum gdb_
14201420
{
14211421
RISCV_INFO(r);
14221422
uint64_t value = r->get_register(target, hartid, regid);
1423-
LOG_DEBUG("[%d] reg[0x%x] = %" PRIx64, hartid, regid, value);
1423+
LOG_DEBUG("[%d] %s: %" PRIx64, hartid, gdb_regno_name(regid), value);
14241424
return value;
14251425
}
14261426

@@ -1596,8 +1596,57 @@ int riscv_enumerate_triggers(struct target *target)
15961596

15971597
riscv_set_register_on_hart(target, hartid, GDB_REGNO_TSELECT, tselect);
15981598

1599-
LOG_DEBUG("[%d] Found %d triggers", hartid, r->trigger_count[hartid]);
1599+
LOG_INFO("[%d] Found %d triggers", hartid, r->trigger_count[hartid]);
16001600
}
16011601

16021602
return ERROR_OK;
16031603
}
1604+
1605+
const char *gdb_regno_name(enum gdb_regno regno)
1606+
{
1607+
static char buf[32];
1608+
1609+
switch (regno) {
1610+
case GDB_REGNO_ZERO:
1611+
return "zero";
1612+
case GDB_REGNO_S0:
1613+
return "s0";
1614+
case GDB_REGNO_S1:
1615+
return "s1";
1616+
case GDB_REGNO_PC:
1617+
return "pc";
1618+
case GDB_REGNO_FPR0:
1619+
return "fpr0";
1620+
case GDB_REGNO_FPR31:
1621+
return "fpr31";
1622+
case GDB_REGNO_CSR0:
1623+
return "csr0";
1624+
case GDB_REGNO_TSELECT:
1625+
return "tselect";
1626+
case GDB_REGNO_TDATA1:
1627+
return "tdata1";
1628+
case GDB_REGNO_TDATA2:
1629+
return "tdata2";
1630+
case GDB_REGNO_MISA:
1631+
return "misa";
1632+
case GDB_REGNO_DPC:
1633+
return "dpc";
1634+
case GDB_REGNO_DCSR:
1635+
return "dcsr";
1636+
case GDB_REGNO_DSCRATCH:
1637+
return "dscratch";
1638+
case GDB_REGNO_MSTATUS:
1639+
return "mstatus";
1640+
case GDB_REGNO_PRIV:
1641+
return "priv";
1642+
default:
1643+
if (regno <= GDB_REGNO_XPR31) {
1644+
sprintf(buf, "x%d", regno - GDB_REGNO_XPR0);
1645+
} else if (regno >= GDB_REGNO_CSR0 && regno <= GDB_REGNO_CSR4095) {
1646+
sprintf(buf, "csr%d", regno - GDB_REGNO_CSR0);
1647+
} else {
1648+
sprintf(buf, "gdb_regno_%d", regno);
1649+
}
1650+
return buf;
1651+
}
1652+
}

0 commit comments

Comments
 (0)