Commit e4502042 authored by Andrew Burgess's avatar Andrew Burgess
Browse files

gdb/riscv: place unknown csrs into the correct register groups

Unknown riscv CSRs should not be in the 'general' group, but should be
in the system and csr register groups.

To see this in action connect to QEMU, this target advertises two
registers dscratch and mucounteren which are unknown to GDB (these are
legacy CSRs).  Before this commit these registers would show up in the
output of:

  (gdb) info registers
  ....
  dscratch       Could not fetch register "dscratch"; remote failure reply 'E14'
  mucounteren    Could not fetch register "mucounteren"; remote failure reply 'E14'

Ignore the errors, this is just a QEMU annoyance, it advertises these
CSRs, but doesn't actually let GDB read them.  These registers don't
show up in the output of either:

  (gdb) info registers csr
  (gdb) info registers system

After this commit this situation is reveresed, which makes more sense
to me.

gdb/ChangeLog:

	* riscv-tdep.c (riscv_is_unknown_csr): New function,
	implementation moved from riscv_register_reggroup_p.
	(riscv_register_reggroup_p): Update group handling for unknown
	CSRs.

gdb/testsuite/ChangeLog:

	* gdb.arch/riscv-tdesc-regs.exp (get_expected_result): New proc,
	update test to use this.
parent 7ddfb1a8
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment