public inbox for gdb-cvs@sourceware.org help / color / mirror / Atom feed
From: Tiezhu Yang <yangtiezhu@sourceware.org> To: gdb-cvs@sourceware.org Subject: [binutils-gdb] gdbserver: LoongArch: Simplify code with register number macros Date: Sun, 10 Jul 2022 09:31:12 +0000 (GMT) [thread overview] Message-ID: <20220710093112.0321F3857B94@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=3eba483364436567fd1b6ac4b5d82e23bb223a54 commit 3eba483364436567fd1b6ac4b5d82e23bb223a54 Author: Youling Tang <tangyouling@loongson.cn> Date: Sun Jul 10 10:22:33 2022 +0800 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> 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 @@ #include "gdbsupport/tdesc.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. */ + LOONGARCH_ARG_REGNUM = 8, /* r4-r11: general-purpose argument registers. + f0-f7: floating-point argument registers. */ +}; + /* The set of LoongArch architectural features that we track that impact how 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" -/* 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. */ - LOONGARCH_ARG_REGNUM = 8, /* r4-r11: general-purpose argument registers. - f0-f7: floating-point argument registers. */ -}; - /* 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..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 = 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; }
reply other threads:[~2022-07-10 9:31 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220710093112.0321F3857B94@sourceware.org \ --to=yangtiezhu@sourceware.org \ --cc=gdb-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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).