summaryrefslogtreecommitdiff
path: root/gdbserver
diff options
context:
space:
mode:
authorYouling Tang <tangyouling@loongson.cn>2022-07-10 10:22:33 +0800
committerTiezhu Yang <yangtiezhu@loongson.cn>2022-07-10 17:27:50 +0800
commit3eba483364436567fd1b6ac4b5d82e23bb223a54 (patch)
treee28a404bcf927b5bc244ccd8c96c70ce1551da50 /gdbserver
parente5c0531cfe8667e4f510f6357e62f488113b7049 (diff)
gdbserver: LoongArch: Simplify code with register number macros
Move "enum loongarch_regnum" to gdb/arch/loongarch.h so that the macro definitions can be used in gdbserver/linux-loongarch-low.cc to simplify the code. Signed-off-by: Youling Tang <tangyouling@loongson.cn> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Diffstat (limited to 'gdbserver')
-rw-r--r--gdbserver/linux-loongarch-low.cc24
1 files changed, 9 insertions, 15 deletions
diff --git a/gdbserver/linux-loongarch-low.cc b/gdbserver/linux-loongarch-low.cc
index 5d3739354e..7b81e4b786 100644
--- a/gdbserver/linux-loongarch-low.cc
+++ b/gdbserver/linux-loongarch-low.cc
@@ -94,15 +94,13 @@ loongarch_target::low_arch_setup ()
static void
loongarch_fill_gregset (struct regcache *regcache, void *buf)
{
- const struct target_desc *tdesc = regcache->tdesc;
elf_gregset_t *regset = (elf_gregset_t *) buf;
- int regno = find_regno (tdesc, "r0");
int i;
for (i = 1; i < 32; i++)
- collect_register (regcache, regno + i, *regset + i);
- collect_register_by_name (regcache, "pc", *regset + 32);
- collect_register_by_name (regcache, "badv", *regset + 33);
+ collect_register (regcache, i, *regset + i);
+ collect_register (regcache, LOONGARCH_PC_REGNUM, *regset + LOONGARCH_PC_REGNUM);
+ collect_register (regcache, LOONGARCH_BADV_REGNUM, *regset + LOONGARCH_BADV_REGNUM);
}
/* Supply GPRs from BUF into REGCACHE. */
@@ -110,16 +108,14 @@ loongarch_fill_gregset (struct regcache *regcache, void *buf)
static void
loongarch_store_gregset (struct regcache *regcache, const void *buf)
{
- const struct target_desc *tdesc = regcache->tdesc;
const elf_gregset_t *regset = (const elf_gregset_t *) buf;
- int regno = find_regno (tdesc, "r0");
int i;
- supply_register_zeroed (regcache, regno);
+ supply_register_zeroed (regcache, 0);
for (i = 1; i < 32; i++)
- supply_register (regcache, regno + i, *regset + i);
- supply_register_by_name (regcache, "pc", *regset + 32);
- supply_register_by_name (regcache, "badv", *regset + 33);
+ supply_register (regcache, i, *regset + i);
+ supply_register (regcache, LOONGARCH_PC_REGNUM, *regset + LOONGARCH_PC_REGNUM);
+ supply_register (regcache, LOONGARCH_BADV_REGNUM, *regset + LOONGARCH_BADV_REGNUM);
}
/* LoongArch/Linux regsets. */
@@ -158,11 +154,9 @@ loongarch_target::get_regs_info ()
bool
loongarch_target::low_fetch_register (regcache *regcache, int regno)
{
- const struct target_desc *tdesc = regcache->tdesc;
-
- if (regno != find_regno (tdesc, "r0"))
+ if (regno != 0)
return false;
- supply_register_zeroed (regcache, regno);
+ supply_register_zeroed (regcache, 0);
return true;
}