From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12101 invoked by alias); 13 Nov 2008 15:11:17 -0000 Received: (qmail 11593 invoked by uid 22791); 13 Nov 2008 15:11:13 -0000 X-Spam-Check-By: sourceware.org Received: from igw2.br.ibm.com (HELO igw2.br.ibm.com) (32.104.18.25) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 13 Nov 2008 15:10:21 +0000 Received: from d24relay01.br.ibm.com (unknown [9.8.31.16]) by igw2.br.ibm.com (Postfix) with ESMTP id F357817F578 for ; Thu, 13 Nov 2008 13:08:29 -0200 (BRDT) Received: from d24av01.br.ibm.com (d24av01.br.ibm.com [9.18.232.46]) by d24relay01.br.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id mADG9tMY2162906 for ; Thu, 13 Nov 2008 13:09:55 -0300 Received: from d24av01.br.ibm.com (loopback [127.0.0.1]) by d24av01.br.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id mADFAIg7008351 for ; Thu, 13 Nov 2008 13:10:18 -0200 Received: from [9.18.238.89] ([9.18.238.89]) by d24av01.br.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id mADFAInE008348 for ; Thu, 13 Nov 2008 13:10:18 -0200 Subject: Re: [rfc][2/2] add suport for 64-bit fpscr in gdbserver for powerpc linux From: Thiago Jung Bauermann To: gdb-patches ml In-Reply-To: <1222275249.8661.9.camel@localhost.localdomain> References: <1221436907.17278.6.camel@localhost.localdomain> <1222275249.8661.9.camel@localhost.localdomain> Content-Type: text/plain; charset=utf-8 Date: Thu, 13 Nov 2008 20:09:00 -0000 Message-Id: <1226589014.20764.170.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.22.3.1 Content-Transfer-Encoding: 8bit X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-11/txt/msg00285.txt.bz2 Ping? El mié, 24-09-2008 a las 13:54 -0300, Thiago Jung Bauermann escribió: > Ping? > > El dom, 14-09-2008 a las 21:01 -0300, Thiago Jung Bauermann escribió: > > Hi, > > > > This patch enables 64-bit wide FPSCR in gdbserver under Linux, also > > using the AUXV to detect the feature on the underlying processor. > > > > Ran the testsuite over gdbserver on ppc-linux and ppc64-linux, on a > > machine with 64-bit FPSCR and also on a machine with a 32-bit FPSCR. No > > regressions found. Ok? > > -- > > []'s > > Thiago Jung Bauermann > > IBM Linux Technology Center > > > > :ADDPATCH gdbserver, powerpc: > > > > 2008-09-14 Thiago Jung Bauermann > > > > gdb/ > > * features/Makefile (rs6000/powerpc-isa205-32l-expedite, > > rs6000/powerpc-isa205-altivec32l-expedite, > > powerpc-isa205-vsx32l-expedite, rs6000/powerpc-isa205-64l-expedite, > > rs6000/powerpc-isa205-altivec64l-expedite, > > powerpc-isa205-vsx64l-expedite): New variables. > > * regformats/rs6000/powerpc-isa205-32l.dat: Generate. > > * regformats/rs6000/powerpc-isa205-altivec32l.dat: Generate. > > * regformats/rs6000/powerpc-isa205-vsx32l.dat: Generate. > > * regformats/rs6000/powerpc-isa205-64l.dat: Generate. > > * regformats/rs6000/powerpc-isa205-altivec64l.dat: Generate. > > * regformats/rs6000/powerpc-isa205-vsx64l.dat: Generate. > > > > gdbserver/ > > * Makefile.in (powerpc-isa205-32l.o, powerpc-isa205-32l.c, > > powerpc-isa205-altivec32l.o, powerpc-isa205-altivec32l.c, > > powerpc-isa205-vsx32l.o, powerpc-isa205-vsx32l.c, > > powerpc-isa205-64l.o, powerpc-isa205-64l.c, > > powerpc-isa205-altivec64l.o, powerpc-isa205-altivec64l.c, > > powerpc-isa205-vsx64l.o, powerpc-isa205-vsx64l.c): New targets. > > * configure.srv (powerpc*-*-linux*): Add ISA 2.05 object files and > > XML target descriptions. > > * linux-ppc-low.c (ppc_arch_setup): Init registers with 64-bit FPSCR > > when inferior is running on an ISA 2.05 or later processor. Add > > special case to return offset for full 64-bit slot of FPSCR when > > in 32-bits. > > > > diff --git a/gdb/features/Makefile b/gdb/features/Makefile > > index 9241e2a..d45ad62 100644 > > --- a/gdb/features/Makefile > > +++ b/gdb/features/Makefile > > @@ -43,10 +43,16 @@ mips64-linux-expedite = r29,pc > > rs6000/powerpc-32l-expedite = r1,pc > > rs6000/powerpc-altivec32l-expedite = r1,pc > > rs6000/powerpc-vsx32l-expedite = r1,pc > > +rs6000/powerpc-isa205-32l-expedite = r1,pc > > +rs6000/powerpc-isa205-altivec32l-expedite = r1,pc > > +rs6000/powerpc-isa205-vsx32l-expedite = r1,pc > > rs6000/powerpc-e500l-expedite = r1,pc > > rs6000/powerpc-64l-expedite = r1,pc > > rs6000/powerpc-altivec64l-expedite = r1,pc > > rs6000/powerpc-vsx64l-expedite = r1,pc > > +rs6000/powerpc-isa205-64l-expedite = r1,pc > > +rs6000/powerpc-isa205-altivec64l-expedite = r1,pc > > +rs6000/powerpc-isa205-vsx64l-expedite = r1,pc > > > > > > XSLTPROC = xsltproc > > diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in > > index 6740060..59a2259 100644 > > --- a/gdb/gdbserver/Makefile.in > > +++ b/gdb/gdbserver/Makefile.in > > @@ -225,7 +225,11 @@ clean: > > rm -f arm-with-iwmmxt.c mips-linux.c mips64-linux.c > > rm -f powerpc-32l.c powerpc-64l.c powerpc-e500l.c > > rm -f powerpc-altivec32l.c powerpc-vsx32l.c powerpc-altivec64l.c > > - rm -f powerpc-vsx64l.c xml-builtin.c stamp-xml > > + rm -f powerpc-vsx64l.c > > + rm -f powerpc-isa205-32l.c powerpc-isa205-64l.c > > + rm -f powerpc-isa205-altivec32l.c powerpc-isa205-vsx32l.c powerpc-isa205-altivec64l.c > > + rm -f powerpc-isa205-vsx64l.c > > + rm -f xml-builtin.c stamp-xml > > > > maintainer-clean realclean distclean: clean > > rm -f nm.h tm.h xm.h config.status config.h stamp-h config.log > > @@ -372,6 +376,15 @@ powerpc-altivec32l.c : $(srcdir)/../regformats/rs6000/powerpc-altivec32l.dat $(r > > powerpc-vsx32l.o : powerpc-vsx32l.c $(regdef_h) > > powerpc-vsx32l.c : $(srcdir)/../regformats/rs6000/powerpc-vsx32l.dat $(regdat_sh) > > $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-vsx32l.dat powerpc-vsx32l.c > > +powerpc-isa205-32l.o : powerpc-isa205-32l.c $(regdef_h) > > +powerpc-isa205-32l.c : $(srcdir)/../regformats/rs6000/powerpc-isa205-32l.dat $(regdat_sh) > > + $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-isa205-32l.dat powerpc-isa205-32l.c > > +powerpc-isa205-altivec32l.o : powerpc-isa205-altivec32l.c $(regdef_h) > > +powerpc-isa205-altivec32l.c : $(srcdir)/../regformats/rs6000/powerpc-isa205-altivec32l.dat $(regdat_sh) > > + $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-isa205-altivec32l.dat powerpc-isa205-altivec32l.c > > +powerpc-isa205-vsx32l.o : powerpc-isa205-vsx32l.c $(regdef_h) > > +powerpc-isa205-vsx32l.c : $(srcdir)/../regformats/rs6000/powerpc-isa205-vsx32l.dat $(regdat_sh) > > + $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-isa205-vsx32l.dat powerpc-isa205-vsx32l.c > > powerpc-e500l.o : powerpc-e500l.c $(regdef_h) > > powerpc-e500l.c : $(srcdir)/../regformats/rs6000/powerpc-e500l.dat $(regdat_sh) > > $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-e500l.dat powerpc-e500l.c > > @@ -384,6 +397,15 @@ powerpc-altivec64l.c : $(srcdir)/../regformats/rs6000/powerpc-altivec64l.dat $(r > > powerpc-vsx64l.o : powerpc-vsx64l.c $(regdef_h) > > powerpc-vsx64l.c : $(srcdir)/../regformats/rs6000/powerpc-vsx64l.dat $(regdat_sh) > > $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-vsx64l.dat powerpc-vsx64l.c > > +powerpc-isa205-64l.o : powerpc-isa205-64l.c $(regdef_h) > > +powerpc-isa205-64l.c : $(srcdir)/../regformats/rs6000/powerpc-isa205-64l.dat $(regdat_sh) > > + $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-isa205-64l.dat powerpc-isa205-64l.c > > +powerpc-isa205-altivec64l.o : powerpc-isa205-altivec64l.c $(regdef_h) > > +powerpc-isa205-altivec64l.c : $(srcdir)/../regformats/rs6000/powerpc-isa205-altivec64l.dat $(regdat_sh) > > + $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-isa205-altivec64l.dat powerpc-isa205-altivec64l.c > > +powerpc-isa205-vsx64l.o : powerpc-isa205-vsx64l.c $(regdef_h) > > +powerpc-isa205-vsx64l.c : $(srcdir)/../regformats/rs6000/powerpc-isa205-vsx64l.dat $(regdat_sh) > > + $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-isa205-vsx64l.dat powerpc-isa205-vsx64l.c > > reg-s390.o : reg-s390.c $(regdef_h) > > reg-s390.c : $(srcdir)/../regformats/reg-s390.dat $(regdat_sh) > > $(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-s390.dat reg-s390.c > > diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv > > index ef7a8eb..17d7408 100644 > > --- a/gdb/gdbserver/configure.srv > > +++ b/gdb/gdbserver/configure.srv > > @@ -103,24 +103,37 @@ case "${target}" in > > powerpc*-*-linux*) srv_regobj="powerpc-32l.o" > > srv_regobj="${srv_regobj} powerpc-altivec32l.o" > > srv_regobj="${srv_regobj} powerpc-vsx32l.o" > > + srv_regobj="${srv_regobj} powerpc-isa205-32l.o" > > + srv_regobj="${srv_regobj} powerpc-isa205-altivec32l.o" > > + srv_regobj="${srv_regobj} powerpc-isa205-vsx32l.o" > > srv_regobj="${srv_regobj} powerpc-e500l.o" > > srv_regobj="${srv_regobj} powerpc-64l.o" > > srv_regobj="${srv_regobj} powerpc-altivec64l.o" > > srv_regobj="${srv_regobj} powerpc-vsx64l.o" > > + srv_regobj="${srv_regobj} powerpc-isa205-64l.o" > > + srv_regobj="${srv_regobj} powerpc-isa205-altivec64l.o" > > + srv_regobj="${srv_regobj} powerpc-isa205-vsx64l.o" > > srv_tgtobj="linux-low.o linux-ppc-low.o" > > srv_xmlfiles="rs6000/powerpc-32l.xml" > > srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec32l.xml" > > srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx32l.xml" > > + srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-32l.xml" > > + srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec32l.xml" > > + srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-vsx32l.xml" > > srv_xmlfiles="${srv_xmlfiles} rs6000/power-altivec.xml" > > srv_xmlfiles="${srv_xmlfiles} rs6000/power-vsx.xml" > > srv_xmlfiles="${srv_xmlfiles} rs6000/power-core.xml" > > srv_xmlfiles="${srv_xmlfiles} rs6000/power-linux.xml" > > srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu.xml" > > + srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu-isa205.xml" > > srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-e500l.xml" > > srv_xmlfiles="${srv_xmlfiles} rs6000/power-spe.xml" > > srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-64l.xml" > > srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec64l.xml" > > srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx64l.xml" > > + srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-64l.xml" > > + srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec64l.xml" > > + srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-vsx64l.xml" > > srv_xmlfiles="${srv_xmlfiles} rs6000/power64-core.xml" > > srv_xmlfiles="${srv_xmlfiles} rs6000/power64-linux.xml" > > srv_linux_usrregs=yes > > diff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c > > index a7bd83f..4b6ac30 100644 > > --- a/gdb/gdbserver/linux-ppc-low.c > > +++ b/gdb/gdbserver/linux-ppc-low.c > > @@ -28,6 +28,7 @@ > > #define PPC_FEATURE_HAS_VSX 0x00000080 > > #define PPC_FEATURE_HAS_ALTIVEC 0x10000000 > > #define PPC_FEATURE_HAS_SPE 0x00800000 > > +#define PPC_FEATURE_ARCH_2_05 0x00001000 > > > > static unsigned long ppc_hwcap; > > > > @@ -38,6 +39,12 @@ void init_registers_powerpc_32l (void); > > void init_registers_powerpc_altivec32l (void); > > /* Defined in auto-generated file powerpc-vsx32l.c. */ > > void init_registers_powerpc_vsx32l (void); > > +/* Defined in auto-generated file powerpc-isa205-32l.c. */ > > +void init_registers_powerpc_isa205_32l (void); > > +/* Defined in auto-generated file powerpc-isa205-altivec32l.c. */ > > +void init_registers_powerpc_isa205_altivec32l (void); > > +/* Defined in auto-generated file powerpc-isa205-vsx32l.c. */ > > +void init_registers_powerpc_isa205_vsx32l (void); > > /* Defined in auto-generated file powerpc-e500l.c. */ > > void init_registers_powerpc_e500l (void); > > /* Defined in auto-generated file powerpc-64l.c. */ > > @@ -46,6 +53,12 @@ void init_registers_powerpc_64l (void); > > void init_registers_powerpc_altivec64l (void); > > /* Defined in auto-generated file powerpc-vsx64l.c. */ > > void init_registers_powerpc_vsx64l (void); > > +/* Defined in auto-generated file powerpc-isa205-64l.c. */ > > +void init_registers_powerpc_isa205_64l (void); > > +/* Defined in auto-generated file powerpc-isa205-altivec64l.c. */ > > +void init_registers_powerpc_isa205_altivec64l (void); > > +/* Defined in auto-generated file powerpc-isa205-vsx64l.c. */ > > +void init_registers_powerpc_isa205_vsx64l (void); > > > > #define ppc_num_regs 73 > > > > @@ -260,9 +273,20 @@ ppc_arch_setup (void) > > { > > ppc_get_hwcap (&ppc_hwcap); > > if (ppc_hwcap & PPC_FEATURE_HAS_VSX) > > - init_registers_powerpc_vsx64l (); > > + { > > + if (ppc_hwcap & PPC_FEATURE_ARCH_2_05) > > + init_registers_powerpc_isa205_vsx64l (); > > + else > > + init_registers_powerpc_vsx64l (); > > + } > > else if (ppc_hwcap & PPC_FEATURE_HAS_ALTIVEC) > > - init_registers_powerpc_altivec64l (); > > + { > > + if (ppc_hwcap & PPC_FEATURE_ARCH_2_05) > > + init_registers_powerpc_isa205_altivec64l (); > > + else > > + init_registers_powerpc_altivec64l (); > > + } > > + > > return; > > } > > #endif > > @@ -272,10 +296,19 @@ ppc_arch_setup (void) > > > > ppc_get_hwcap (&ppc_hwcap); > > if (ppc_hwcap & PPC_FEATURE_HAS_VSX) > > - init_registers_powerpc_vsx32l (); > > + { > > + if (ppc_hwcap & PPC_FEATURE_ARCH_2_05) > > + init_registers_powerpc_isa205_vsx32l (); > > + else > > + init_registers_powerpc_vsx32l (); > > + } > > else if (ppc_hwcap & PPC_FEATURE_HAS_ALTIVEC) > > - init_registers_powerpc_altivec32l (); > > - > > + { > > + if (ppc_hwcap & PPC_FEATURE_ARCH_2_05) > > + init_registers_powerpc_isa205_altivec32l (); > > + else > > + init_registers_powerpc_altivec32l (); > > + } > > > > /* On 32-bit machines, check for SPE registers. > > Set the low target's regmap field as appropriately. */ > > @@ -286,6 +319,12 @@ ppc_arch_setup (void) > > init_registers_powerpc_e500l (); > > the_low_target.regmap = ppc_regmap_e500; > > } > > + > > + /* If the FPSCR is 64-bit wide, we need to fetch the whole 64-bit > > + slot and not just its second word. The PT_FPSCR supplied in a > > + 32-bit GDB compilation doesn't reflect this. */ > > + if (register_size (70) == 8) > > + ppc_regmap[70] = (48 + 2*32) * sizeof (long); > > #endif > > } > > > > > > -- []'s Thiago Jung Bauermann IBM Linux Technology Center