mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-03 21:34:46 +08:00
gdb/csky complete csky_dwarf_reg_to_regnum
For csky arch, the correspondence between Dwarf registers and GDB registers are as follows: dwarf regnos 0~31 ==> gdb regs r0~r31 dwarf regno CSKY_HI_REGNUM(36) ==> gdb reg hi dwarf regno CSKY_LO_REGNUM(37) ==> gdb reg hi dwarf regno CSKY_PC_REGNUM(72) ==> gdb reg pc dwarf regnos FV_PSEUDO_REGNO_FIRST(74)~FV_PSEUDO_REGNO_LAST(201) ==> gdb regs s0~s127 (pseudo regs for float and vector regs) other dwarf regnos have no corresponding gdb regs to them.
This commit is contained in:
@ -2556,9 +2556,28 @@ csky_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
|
||||
static int
|
||||
csky_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int dw_reg)
|
||||
{
|
||||
if (dw_reg < 0 || dw_reg >= CSKY_NUM_REGS)
|
||||
return -1;
|
||||
return dw_reg;
|
||||
/* For GPRs. */
|
||||
if (dw_reg >= CSKY_R0_REGNUM && dw_reg <= (CSKY_R0_REGNUM + 31))
|
||||
return dw_reg;
|
||||
|
||||
/* For Hi, Lo, PC. */
|
||||
if ((dw_reg == CSKY_HI_REGNUM) || (dw_reg == CSKY_LO_REGNUM)
|
||||
|| (dw_reg == CSKY_PC_REGNUM))
|
||||
return dw_reg;
|
||||
|
||||
/* For Float and Vector pseudo registers. */
|
||||
if ((dw_reg >= FV_PSEUDO_REGNO_FIRST) && (dw_reg <= FV_PSEUDO_REGNO_LAST))
|
||||
{
|
||||
char name_buf[4];
|
||||
|
||||
xsnprintf (name_buf, sizeof (name_buf), "s%d",
|
||||
dw_reg - FV_PSEUDO_REGNO_FIRST);
|
||||
return user_reg_map_name_to_regnum (gdbarch, name_buf,
|
||||
strlen (name_buf));
|
||||
}
|
||||
|
||||
/* Others, unknown. */
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Override interface for command: info register. */
|
||||
|
@ -108,6 +108,10 @@ enum csky_regnum
|
||||
/* For fr0~fr15, fr16~fr31, vr0~vr15 check. */
|
||||
#define CSKY_FULL16_ONEHOT_VALUE 0xffff
|
||||
|
||||
/* Define for CSKY FV pseudo regs for dwarf regs. */
|
||||
#define FV_PSEUDO_REGNO_FIRST 74
|
||||
#define FV_PSEUDO_REGNO_LAST 201
|
||||
|
||||
/* Number of processor registers w/o ICE registers. */
|
||||
#define CSKY_NUM_REGS (CSKY_MAX_REGS - CSKY_CRBANK_NUM_REGS)
|
||||
|
||||
|
Reference in New Issue
Block a user