From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7882) id 1A28D3835839; Fri, 22 Jul 2022 02:33:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1A28D3835839 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Jiangshuai Li To: gdb-cvs@sourceware.org Subject: [binutils-gdb] gdb/csky modify registers list for general_reggroup X-Act-Checkin: binutils-gdb X-Git-Author: Jiangshuai Li X-Git-Refname: refs/heads/master X-Git-Oldrev: b5375c5da917828f801dff29e817895910f87536 X-Git-Newrev: 4686f81068433540a8dcf1104548389922e2bfef Message-Id: <20220722023359.1A28D3835839@sourceware.org> Date: Fri, 22 Jul 2022 02:33:59 +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: Fri, 22 Jul 2022 02:33:59 -0000 https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D4686f8106843= 3540a8dcf1104548389922e2bfef commit 4686f81068433540a8dcf1104548389922e2bfef Author: Jiangshuai Li Date: Fri Jul 22 10:33:14 2022 +0800 gdb/csky modify registers list for general_reggroup =20 There are two modification points here: 1. For the debugging of csky architecture, after executing "info regist= er", we hope to print out GPRs, PC and the registers related to exception= s. 2. With tdesc-xml, users can view the register groups described in XML. Diff: --- gdb/csky-tdep.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/gdb/csky-tdep.c b/gdb/csky-tdep.c index 93534306af5..01d4a0f28cb 100644 --- a/gdb/csky-tdep.c +++ b/gdb/csky-tdep.c @@ -2518,7 +2518,11 @@ csky_register_reggroup_p (struct gdbarch *gdbarch, i= nt regnum, if (reggroup =3D=3D save_reggroup || reggroup =3D=3D restore_reggroup) return raw_p; =20 - if (((regnum >=3D CSKY_R0_REGNUM) && (regnum <=3D CSKY_R0_REGNUM + 31)) + if ((((regnum >=3D CSKY_R0_REGNUM) && (regnum <=3D CSKY_R0_REGNUM + 31)) + || (regnum =3D=3D CSKY_PC_REGNUM) + || (regnum =3D=3D CSKY_EPC_REGNUM) + || (regnum =3D=3D CSKY_CR0_REGNUM) + || (regnum =3D=3D CSKY_EPSR_REGNUM)) && (reggroup =3D=3D general_reggroup)) return 1; =20 @@ -2548,6 +2552,12 @@ csky_register_reggroup_p (struct gdbarch *gdbarch, i= nt regnum, && (reggroup =3D=3D fr_reggroup)) return 6; =20 + if (tdesc_has_registers (gdbarch_target_desc (gdbarch))) + { + if (tdesc_register_in_reggroup_p (gdbarch, regnum, reggroup) > 0) + return 7; + } + return 0; } =20 @@ -2557,16 +2567,16 @@ static int csky_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int dw_reg) { /* For GPRs. */ - if (dw_reg >=3D CSKY_R0_REGNUM && dw_reg <=3D (CSKY_R0_REGNUM + 31)) + if (dw_reg >=3D CSKY_R0_REGNUM && dw_reg <=3D CSKY_R0_REGNUM + 31) return dw_reg; =20 /* For Hi, Lo, PC. */ - if ((dw_reg =3D=3D CSKY_HI_REGNUM) || (dw_reg =3D=3D CSKY_LO_REGNUM) - || (dw_reg =3D=3D CSKY_PC_REGNUM)) + if (dw_reg =3D=3D CSKY_HI_REGNUM || dw_reg =3D=3D CSKY_LO_REGNUM + || dw_reg =3D=3D CSKY_PC_REGNUM) return dw_reg; =20 /* For Float and Vector pseudo registers. */ - if ((dw_reg >=3D FV_PSEUDO_REGNO_FIRST) && (dw_reg <=3D FV_PSEUDO_REGNO= _LAST)) + if (dw_reg >=3D FV_PSEUDO_REGNO_FIRST && dw_reg <=3D FV_PSEUDO_REGNO_LAS= T) { char name_buf[4]; =20 @@ -3020,6 +3030,8 @@ csky_gdbarch_init (struct gdbarch_info info, struct g= dbarch_list *arches) set_gdbarch_num_regs (gdbarch, (num_regs + 1)); tdesc_use_registers (gdbarch, info.target_desc, std::move (tdesc_dat= a)); set_gdbarch_register_type (gdbarch, csky_register_type); + set_gdbarch_register_reggroup_p (gdbarch, + csky_register_reggroup_p); } =20 if (tdep->fv_pseudo_registers_count)