From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7873) id 0321F3857B94; Sun, 10 Jul 2022 09:31:12 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0321F3857B94 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Tiezhu Yang To: gdb-cvs@sourceware.org Subject: [binutils-gdb] gdbserver: LoongArch: Simplify code with register number macros X-Act-Checkin: binutils-gdb X-Git-Author: Youling Tang X-Git-Refname: refs/heads/master X-Git-Oldrev: e5c0531cfe8667e4f510f6357e62f488113b7049 X-Git-Newrev: 3eba483364436567fd1b6ac4b5d82e23bb223a54 Message-Id: <20220710093112.0321F3857B94@sourceware.org> Date: Sun, 10 Jul 2022 09:31:12 +0000 (GMT) X-BeenThere: gdb-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Jul 2022 09:31:12 -0000 https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D3eba48336443= 6567fd1b6ac4b5d82e23bb223a54 commit 3eba483364436567fd1b6ac4b5d82e23bb223a54 Author: Youling Tang Date: Sun Jul 10 10:22:33 2022 +0800 gdbserver: LoongArch: Simplify code with register number macros =20 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. =20 Signed-off-by: Youling Tang Signed-off-by: Tiezhu Yang Diff: --- gdb/arch/loongarch.h | 16 ++++++++++++++++ gdb/loongarch-tdep.h | 16 ---------------- gdbserver/linux-loongarch-low.cc | 24 +++++++++--------------- 3 files changed, 25 insertions(+), 31 deletions(-) diff --git a/gdb/arch/loongarch.h b/gdb/arch/loongarch.h index 8194ea66c0a..5cf5498079a 100644 --- a/gdb/arch/loongarch.h +++ b/gdb/arch/loongarch.h @@ -22,6 +22,22 @@ =20 #include "gdbsupport/tdesc.h" =20 +/* Register numbers of various important registers. */ +enum +{ + LOONGARCH_RA_REGNUM =3D 1, /* Return Address. */ + LOONGARCH_SP_REGNUM =3D 3, /* Stack Pointer. */ + LOONGARCH_A0_REGNUM =3D 4, /* First Argument/Return Value. */ + LOONGARCH_A7_REGNUM =3D 11, /* Seventh Argument/Syscall Number. */ + LOONGARCH_FP_REGNUM =3D 22, /* Frame Pointer. */ + LOONGARCH_ORIG_A0_REGNUM =3D 32, /* Syscall's original arg0. */ + LOONGARCH_PC_REGNUM =3D 33, /* Program Counter. */ + LOONGARCH_BADV_REGNUM =3D 34, /* Bad Vaddr for Addressing Exception. */ + LOONGARCH_LINUX_NUM_GREGSET =3D 45, /* 32 GPR, ORIG_A0, PC, BADV, RESERV= ED 10. */ + LOONGARCH_ARG_REGNUM =3D 8, /* r4-r11: general-purpose argume= nt registers. + f0-f7: floating-point argument registers. */ +}; + /* The set of LoongArch architectural features that we track that impact h= ow we configure the actual gdbarch instance. We hold one of these in the gdbarch_tdep structure, and use it to distinguish between different diff --git a/gdb/loongarch-tdep.h b/gdb/loongarch-tdep.h index 672bc2b80de..b68a7892f2b 100644 --- a/gdb/loongarch-tdep.h +++ b/gdb/loongarch-tdep.h @@ -27,22 +27,6 @@ #include "elf/loongarch.h" #include "opcode/loongarch.h" =20 -/* Register numbers of various important registers. */ -enum -{ - LOONGARCH_RA_REGNUM =3D 1, /* Return Address. */ - LOONGARCH_SP_REGNUM =3D 3, /* Stack Pointer. */ - LOONGARCH_A0_REGNUM =3D 4, /* First Argument/Return Value. */ - LOONGARCH_A7_REGNUM =3D 11, /* Seventh Argument/Syscall Number. */ - LOONGARCH_FP_REGNUM =3D 22, /* Frame Pointer. */ - LOONGARCH_ORIG_A0_REGNUM =3D 32, /* Syscall's original arg0. */ - LOONGARCH_PC_REGNUM =3D 33, /* Program Counter. */ - LOONGARCH_BADV_REGNUM =3D 34, /* Bad Vaddr for Addressing Exception. */ - LOONGARCH_LINUX_NUM_GREGSET =3D 45, /* 32 GPR, ORIG_A0, PC, BADV, RESERV= ED 10. */ - LOONGARCH_ARG_REGNUM =3D 8, /* r4-r11: general-purpose argume= nt registers. - f0-f7: floating-point argument registers. */ -}; - /* Register set definitions. */ extern const struct regset loongarch_gregset; =20 diff --git a/gdbserver/linux-loongarch-low.cc b/gdbserver/linux-loongarch-l= ow.cc index 5d3739354e6..7b81e4b786a 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 =3D regcache->tdesc; elf_gregset_t *regset =3D (elf_gregset_t *) buf; - int regno =3D find_regno (tdesc, "r0"); int i; =20 for (i =3D 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_B= ADV_REGNUM); } =20 /* Supply GPRs from BUF into REGCACHE. */ @@ -110,16 +108,14 @@ loongarch_fill_gregset (struct regcache *regcache, vo= id *buf) static void loongarch_store_gregset (struct regcache *regcache, const void *buf) { - const struct target_desc *tdesc =3D regcache->tdesc; const elf_gregset_t *regset =3D (const elf_gregset_t *) buf; - int regno =3D find_regno (tdesc, "r0"); int i; =20 - supply_register_zeroed (regcache, regno); + supply_register_zeroed (regcache, 0); for (i =3D 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_R= EGNUM); + supply_register (regcache, LOONGARCH_BADV_REGNUM, *regset + LOONGARCH_BA= DV_REGNUM); } =20 /* 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 =3D regcache->tdesc; - - if (regno !=3D find_regno (tdesc, "r0")) + if (regno !=3D 0) return false; - supply_register_zeroed (regcache, regno); + supply_register_zeroed (regcache, 0); return true; }