gdb/riscv: Add float status registers to save and restore reggroups
We should save and restore the floating point status registers. This became an issue when testing 32-bit float on a target with 64-bit with the gdb.base/callfuncs.exp test. gdb/ChangeLog: * riscv-tdep.c (riscv_register_reggroup_p): Save and restore fcsr, fflags, and frm registers.
This commit is contained in:
parent
fb44d95af6
commit
ecc82c0590
|
@ -1,3 +1,8 @@
|
||||||
|
2018-12-22 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||||
|
|
||||||
|
* riscv-tdep.c (riscv_register_reggroup_p): Save and restore fcsr,
|
||||||
|
fflags, and frm registers.
|
||||||
|
|
||||||
2018-12-22 Andrew Burgess <andrew.burgess@embecosm.com>
|
2018-12-22 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||||
|
|
||||||
* riscv-tdep.c (riscv_dwarf_reg_to_regnum): New function.
|
* riscv-tdep.c (riscv_dwarf_reg_to_regnum): New function.
|
||||||
|
|
|
@ -896,7 +896,10 @@ riscv_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
|
||||||
else if (reggroup == restore_reggroup || reggroup == save_reggroup)
|
else if (reggroup == restore_reggroup || reggroup == save_reggroup)
|
||||||
{
|
{
|
||||||
if (riscv_has_fp_regs (gdbarch))
|
if (riscv_has_fp_regs (gdbarch))
|
||||||
return regnum <= RISCV_LAST_FP_REGNUM;
|
return (regnum <= RISCV_LAST_FP_REGNUM
|
||||||
|
|| regnum == RISCV_CSR_FCSR_REGNUM
|
||||||
|
|| regnum == RISCV_CSR_FFLAGS_REGNUM
|
||||||
|
|| regnum == RISCV_CSR_FRM_REGNUM);
|
||||||
else
|
else
|
||||||
return regnum < RISCV_FIRST_FP_REGNUM;
|
return regnum < RISCV_FIRST_FP_REGNUM;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue