public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 1/2] gdbserver: LoongArch: Simplify code with register number macros
@ 2022-07-07  3:16 Youling Tang
  2022-07-10  9:38 ` Tiezhu Yang
  0 siblings, 1 reply; 2+ messages in thread
From: Youling Tang @ 2022-07-07  3:16 UTC (permalink / raw)
  To: gdb-patches

Commit 0757a50396e3 ("gdb: LoongArch: Define register numbers and clean up
code") defines register number related macros, which are used in gebserver
to simplify related code.

Signed-off-by: Youling Tang <tangyouling@loongson.cn>
---
 gdb/arch/loongarch.h             | 15 +++++++++++++++
 gdb/loongarch-linux-tdep.c       |  6 +++---
 gdb/loongarch-tdep.h             | 14 --------------
 gdbserver/linux-loongarch-low.cc | 24 +++++++++---------------
 4 files changed, 27 insertions(+), 32 deletions(-)

diff --git a/gdb/arch/loongarch.h b/gdb/arch/loongarch.h
index 8194ea66c0a..a52e72cd459 100644
--- a/gdb/arch/loongarch.h
+++ b/gdb/arch/loongarch.h
@@ -60,6 +60,21 @@ struct loongarch_gdbarch_features
   }
 };
 
+/* Register numbers of various important registers.  */
+enum loongarch_regnum
+{
+  LOONGARCH_ZERO_REGNUM = 0,		/* First Integer Register/Constant Zero.  */
+  LOONGARCH_RA_REGNUM = 1,		/* Return Address.  */
+  LOONGARCH_SP_REGNUM = 3,		/* Stack Pointer.  */
+  LOONGARCH_A0_REGNUM = 4,		/* First Argument/Return Value.  */
+  LOONGARCH_A7_REGNUM = 11,		/* Seventh Argument/Syscall Number.  */
+  LOONGARCH_FP_REGNUM = 22,		/* Frame Pointer.  */
+  LOONGARCH_ORIG_A0_REGNUM = 32,	/* Syscall's original arg0.  */
+  LOONGARCH_PC_REGNUM = 33,		/* Program Counter.  */
+  LOONGARCH_BADV_REGNUM = 34,		/* Bad Vaddr for Addressing Exception.  */
+  LOONGARCH_LINUX_NUM_GREGSET = 45,	/* 32 GPR, ORIG_A0, PC, BADV, RESERVED 10.  */
+};
+
 #ifdef GDBSERVER
 
 /* Create and return a target description that is compatible with FEATURES.
diff --git a/gdb/loongarch-linux-tdep.c b/gdb/loongarch-linux-tdep.c
index 1076e935997..4ecf1000308 100644
--- a/gdb/loongarch-linux-tdep.c
+++ b/gdb/loongarch-linux-tdep.c
@@ -40,7 +40,7 @@ loongarch_supply_gregset (const struct regset *regset,
 
   if (regnum == -1)
     {
-      regcache->raw_supply_zeroed (0);
+      regcache->raw_supply_zeroed (LOONGARCH_ZERO_REGNUM);
 
       for (int i = 1; i < 32; i++)
 	{
@@ -57,8 +57,8 @@ loongarch_supply_gregset (const struct regset *regset,
       buf = (const gdb_byte*) gprs + regsize * LOONGARCH_BADV_REGNUM;
       regcache->raw_supply (LOONGARCH_BADV_REGNUM, (const void *) buf);
     }
-  else if (regnum == 0)
-    regcache->raw_supply_zeroed (0);
+  else if (regnum == LOONGARCH_ZERO_REGNUM)
+    regcache->raw_supply_zeroed (LOONGARCH_ZERO_REGNUM);
   else if ((regnum > 0 && regnum < 32)
 	   || regnum == LOONGARCH_ORIG_A0_REGNUM
 	   || regnum == LOONGARCH_PC_REGNUM
diff --git a/gdb/loongarch-tdep.h b/gdb/loongarch-tdep.h
index acf0191fd65..b68a7892f2b 100644
--- a/gdb/loongarch-tdep.h
+++ b/gdb/loongarch-tdep.h
@@ -27,20 +27,6 @@
 #include "elf/loongarch.h"
 #include "opcode/loongarch.h"
 
-/* Register numbers of various important registers.  */
-enum
-{
-  LOONGARCH_RA_REGNUM = 1,		/* Return Address.  */
-  LOONGARCH_SP_REGNUM = 3,		/* Stack Pointer.  */
-  LOONGARCH_A0_REGNUM = 4,		/* First Argument/Return Value.  */
-  LOONGARCH_A7_REGNUM = 11,		/* Seventh Argument/Syscall Number.  */
-  LOONGARCH_FP_REGNUM = 22,		/* Frame Pointer.  */
-  LOONGARCH_ORIG_A0_REGNUM = 32,	/* Syscall's original arg0.  */
-  LOONGARCH_PC_REGNUM = 33,		/* Program Counter.  */
-  LOONGARCH_BADV_REGNUM = 34,		/* Bad Vaddr for Addressing Exception.  */
-  LOONGARCH_LINUX_NUM_GREGSET = 45,	/* 32 GPR, ORIG_A0, PC, BADV, RESERVED 10.  */
-};
-
 /* Register set definitions.  */
 extern const struct regset loongarch_gregset;
 
diff --git a/gdbserver/linux-loongarch-low.cc b/gdbserver/linux-loongarch-low.cc
index 5d3739354e6..9e2ada1f578 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, LOONGARCH_ZERO_REGNUM + 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, LOONGARCH_ZERO_REGNUM);
   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, LOONGARCH_ZERO_REGNUM + 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 != LOONGARCH_ZERO_REGNUM)
     return false;
-  supply_register_zeroed (regcache, regno);
+  supply_register_zeroed (regcache, LOONGARCH_ZERO_REGNUM);
   return true;
 }
 
-- 
2.20.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH 1/2] gdbserver: LoongArch: Simplify code with register number macros
  2022-07-07  3:16 [PATCH 1/2] gdbserver: LoongArch: Simplify code with register number macros Youling Tang
@ 2022-07-10  9:38 ` Tiezhu Yang
  0 siblings, 0 replies; 2+ messages in thread
From: Tiezhu Yang @ 2022-07-10  9:38 UTC (permalink / raw)
  To: Youling Tang, gdb-patches



On 07/07/2022 11:16 AM, Youling Tang wrote:
> Commit 0757a50396e3 ("gdb: LoongArch: Define register numbers and clean up
> code") defines register number related macros, which are used in gebserver
> to simplify related code.
>
> Signed-off-by: Youling Tang <tangyouling@loongson.cn>

Pushed with small changes.

Thanks,
Tiezhu


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-07-10  9:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-07  3:16 [PATCH 1/2] gdbserver: LoongArch: Simplify code with register number macros Youling Tang
2022-07-10  9:38 ` Tiezhu Yang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).