From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5041 invoked by alias); 5 Oct 2007 18:02:31 -0000 Received: (qmail 5024 invoked by uid 22791); 5 Oct 2007 18:02:17 -0000 X-Spam-Check-By: sourceware.org Received: from NaN.false.org (HELO nan.false.org) (208.75.86.248) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 05 Oct 2007 18:02:10 +0000 Received: from nan.false.org (localhost [127.0.0.1]) by nan.false.org (Postfix) with ESMTP id 5E3CA981F4 for ; Fri, 5 Oct 2007 18:02:08 +0000 (GMT) Received: from caradoc.them.org (22.svnf5.xdsl.nauticom.net [209.195.183.55]) by nan.false.org (Postfix) with ESMTP id E31E4981F1 for ; Fri, 5 Oct 2007 18:02:07 +0000 (GMT) Received: from drow by caradoc.them.org with local (Exim 4.67) (envelope-from ) id 1IdrV1-0001G9-42 for gdb-patches@sourceware.org; Fri, 05 Oct 2007 14:02:07 -0400 Date: Fri, 05 Oct 2007 18:02:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sourceware.org Subject: [patch] gdbserver support for e500 / altivec Message-ID: <20071005180207.GA4545@caradoc.them.org> Mail-Followup-To: gdb-patches@sourceware.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.15 (2007-04-09) 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: 2007-10/txt/msg00064.txt.bz2 And finally, the end of my patch flood for today. This patch teaches gdbserver about the e500 and AltiVec vector register sets, and lets it return an XML description to GDB indicating which registers are present. I've tested this by hand on targets with AltiVec, SPE, and neither. I'll commit it after the various patches it depends on, which I've posted earlier today. Oh, I suppose this needs a NEWS entry. I'll handle that after it's checked in. -- Daniel Jacobowitz CodeSourcery 2007-10-05 Daniel Jacobowitz * Makefile.in (clean): Remove new files. (powerpc-32.o, powerpc-32.c, powerpc-e500.o, powerpc-e500.c) (powerpc-64.o, powerpc-64.c): New rules. * configure.srv: Use alternate register sets for powerpc64-*-linux* with AltiVec, powerpc-*-linux* with AltiVec, and powerpc-*-linux* with SPE. * linux-ppc-low.c (ppc_regmap): Do not fetch the FP registers for SPE targets. (ppc_cannot_store_register): Do not check for FPSCR for SPE targets. (PTRACE_GETVRREGS, PTRACE_SETVRREGS, SIZEOF_VRREGS, ppc_fill_vrregset) (ppc_store_vrregset, PTRACE_GETEVRREGS, PTRACE_SETEVRREGS) (struct gdb_evrregset_t, ppc_fill_evrregset, ppc_store_evrregset): New. (target_regsets): Add AltiVec and SPE register sets. * configure.ac: Check for AltiVec and SPE. * linux-ppc64-low.c (PTRACE_GETVRREGS, PTRACE_SETVRREGS, SIZEOF_VRREGS) (ppc_fill_vrregset, ppc_store_vrregset): New. (target_regsets): Add AltiVec register set. * configure: Regenerated. * features/Makefile (WHICH): Add PowerPC register definitions. (rs6000/powerpc-32-expedite, rs6000/powerpc-e500-expedite) (rs6000/powerpc-64-expedite): New macros. ($(outdir)/%.dat): Handle subdirectories. * regformats/rs6000/powerpc-32.dat, regformats/rs6000/powerpc-64.dat, regformats/rs6000/powerpc-e500.dat: New generated files. --- gdb/features/Makefile | 10 ++ gdb/gdbserver/Makefile.in | 10 ++ gdb/gdbserver/configure | 64 ++++++++++++++++++ gdb/gdbserver/configure.ac | 22 ++++++ gdb/gdbserver/configure.srv | 31 +++++++- gdb/gdbserver/linux-ppc-low.c | 114 ++++++++++++++++++++++++++++++++- gdb/gdbserver/linux-ppc64-low.c | 47 +++++++++++++ gdb/regformats/rs6000/powerpc-32.dat | 108 +++++++++++++++++++++++++++++++ gdb/regformats/rs6000/powerpc-64.dat | 108 +++++++++++++++++++++++++++++++ gdb/regformats/rs6000/powerpc-e500.dat | 76 ++++++++++++++++++++++ 10 files changed, 581 insertions(+), 9 deletions(-) Index: src/gdb/gdbserver/configure =================================================================== --- src.orig/gdb/gdbserver/configure 2007-10-04 14:23:56.000000000 -0400 +++ src/gdb/gdbserver/configure 2007-10-04 16:06:09.000000000 -0400 @@ -3567,6 +3567,70 @@ fi echo "$as_me:$LINENO: result: $gdb_cv_arm_iwmmxt" >&5 echo "${ECHO_T}$gdb_cv_arm_iwmmxt" >&6 ;; + powerpc*-*-*) + echo "$as_me:$LINENO: checking if Altivec is selected" >&5 +echo $ECHO_N "checking if Altivec is selected... $ECHO_C" >&6 +if test "${gdb_cv_ppc_altivec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $CFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#ifdef __ALTIVEC__ +got it +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "got it" >/dev/null 2>&1; then + gdb_cv_ppc_altivec=yes +else + gdb_cv_ppc_altivec=no +fi +rm -f conftest* + + CPPFLAGS="$save_CPPFLAGS" +fi +echo "$as_me:$LINENO: result: $gdb_cv_ppc_altivec" >&5 +echo "${ECHO_T}$gdb_cv_ppc_altivec" >&6 + echo "$as_me:$LINENO: checking if SPE is selected" >&5 +echo $ECHO_N "checking if SPE is selected... $ECHO_C" >&6 +if test "${gdb_cv_ppc_spe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $CFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#ifdef __SPE__ +got it +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "got it" >/dev/null 2>&1; then + gdb_cv_ppc_spe=yes +else + gdb_cv_ppc_spe=no +fi +rm -f conftest* + + CPPFLAGS="$save_CPPFLAGS" +fi +echo "$as_me:$LINENO: result: $gdb_cv_ppc_spe" >&5 +echo "${ECHO_T}$gdb_cv_ppc_spe" >&6 + ;; esac . ${srcdir}/configure.srv Index: src/gdb/gdbserver/Makefile.in =================================================================== --- src.orig/gdb/gdbserver/Makefile.in 2007-10-04 14:23:56.000000000 -0400 +++ src/gdb/gdbserver/Makefile.in 2007-10-04 16:31:05.000000000 -0400 @@ -219,6 +219,7 @@ clean: rm -f reg-ppc.c reg-sh.c reg-spu.c reg-x86-64.c reg-i386-linux.c rm -f reg-cris.c reg-crisv32.c reg-x86-64-linux.c rm -f arm-with-iwmmxt.c mips-linux.c mips64-linux.c + rm -f powerpc-32.c powerpc-64.c powerpc-e500.c rm -f xml-builtin.c stamp-xml target.xml maintainer-clean realclean distclean: clean @@ -356,6 +357,15 @@ reg-ppc.c : $(srcdir)/../regformats/reg- reg-ppc64.o : reg-ppc64.c $(regdef_h) reg-ppc64.c : $(srcdir)/../regformats/reg-ppc64.dat $(regdat_sh) sh $(regdat_sh) $(srcdir)/../regformats/reg-ppc64.dat reg-ppc64.c +powerpc-32.o : powerpc-32.c $(regdef_h) +powerpc-32.c : $(srcdir)/../regformats/rs6000/powerpc-32.dat $(regdat_sh) + sh $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-32.dat powerpc-32.c +powerpc-e500.o : powerpc-e500.c $(regdef_h) +powerpc-e500.c : $(srcdir)/../regformats/rs6000/powerpc-e500.dat $(regdat_sh) + sh $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-e500.dat powerpc-e500.c +powerpc-64.o : powerpc-64.c $(regdef_h) +powerpc-64.c : $(srcdir)/../regformats/rs6000/powerpc-64.dat $(regdat_sh) + sh $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-64.dat powerpc-64.c reg-s390.o : reg-s390.c $(regdef_h) reg-s390.c : $(srcdir)/../regformats/reg-s390.dat $(regdat_sh) sh $(regdat_sh) $(srcdir)/../regformats/reg-s390.dat reg-s390.c Index: src/gdb/gdbserver/configure.srv =================================================================== --- src.orig/gdb/gdbserver/configure.srv 2007-10-04 14:23:56.000000000 -0400 +++ src/gdb/gdbserver/configure.srv 2007-10-04 16:06:09.000000000 -0400 @@ -99,17 +99,38 @@ case "${target}" in srv_linux_usrregs=yes srv_linux_thread_db=yes ;; - powerpc64-*-linux*) srv_regobj=reg-ppc64.o - srv_tgtobj="linux-low.o linux-ppc64-low.o" + powerpc64-*-linux*) srv_tgtobj="linux-low.o linux-ppc64-low.o" srv_linux_usrregs=yes srv_linux_regsets=yes srv_linux_thread_db=yes - ;; - powerpc-*-linux*) srv_regobj=reg-ppc.o - srv_tgtobj="linux-low.o linux-ppc-low.o" + if test $gdb_cv_ppc_altivec = yes; then + srv_regobj=powerpc-64.o + srv_xmltarget=rs6000/powerpc-64.xml + srv_xmlfiles="rs6000/power-altivec.xml" + srv_xmlfiles="$srv_xmlfiles rs6000/power64-core.xml" + srv_xmlfiles="$srv_xmlfiles rs6000/power-fpu.xml" + else + srv_regobj=reg-ppc64.o + fi + ;; + powerpc-*-linux*) srv_tgtobj="linux-low.o linux-ppc-low.o" srv_linux_usrregs=yes srv_linux_regsets=yes srv_linux_thread_db=yes + if test $gdb_cv_ppc_altivec = yes; then + srv_regobj=powerpc-32.o + srv_xmltarget=rs6000/powerpc-32.xml + srv_xmlfiles="rs6000/power-altivec.xml" + srv_xmlfiles="$srv_xmlfiles rs6000/power-core.xml" + srv_xmlfiles="$srv_xmlfiles rs6000/power-fpu.xml" + elif test $gdb_cv_ppc_spe = yes; then + srv_regobj=powerpc-e500.o + srv_xmltarget=rs6000/powerpc-e500.xml + srv_xmlfiles="rs6000/power-spe.xml" + srv_xmlfiles="$srv_xmlfiles rs6000/power-core.xml" + else + srv_regobj=reg-ppc.o + fi ;; s390-*-linux*) srv_regobj=reg-s390.o srv_tgtobj="linux-low.o linux-s390-low.o" Index: src/gdb/gdbserver/linux-ppc-low.c =================================================================== --- src.orig/gdb/gdbserver/linux-ppc-low.c 2007-10-04 14:23:56.000000000 -0400 +++ src/gdb/gdbserver/linux-ppc-low.c 2007-10-04 16:17:11.000000000 -0400 @@ -35,6 +35,16 @@ static int ppc_regmap[] = PT_R20 * 4, PT_R21 * 4, PT_R22 * 4, PT_R23 * 4, PT_R24 * 4, PT_R25 * 4, PT_R26 * 4, PT_R27 * 4, PT_R28 * 4, PT_R29 * 4, PT_R30 * 4, PT_R31 * 4, +#ifdef __SPE__ + -1, -1, -1, -1, + -1, -1, -1, -1, + -1, -1, -1, -1, + -1, -1, -1, -1, + -1, -1, -1, -1, + -1, -1, -1, -1, + -1, -1, -1, -1, + -1, -1, -1, -1, +#else PT_FPR0*4, PT_FPR0*4 + 8, PT_FPR0*4+16, PT_FPR0*4+24, PT_FPR0*4+32, PT_FPR0*4+40, PT_FPR0*4+48, PT_FPR0*4+56, PT_FPR0*4+64, PT_FPR0*4+72, PT_FPR0*4+80, PT_FPR0*4+88, @@ -43,15 +53,23 @@ static int ppc_regmap[] = PT_FPR0*4+160, PT_FPR0*4+168, PT_FPR0*4+176, PT_FPR0*4+184, PT_FPR0*4+192, PT_FPR0*4+200, PT_FPR0*4+208, PT_FPR0*4+216, PT_FPR0*4+224, PT_FPR0*4+232, PT_FPR0*4+240, PT_FPR0*4+248, +#endif PT_NIP * 4, PT_MSR * 4, PT_CCR * 4, PT_LNK * 4, - PT_CTR * 4, PT_XER * 4, PT_FPSCR * 4, }; +#ifdef __SPE__ + PT_CTR * 4, PT_XER * 4, -1 +#else + PT_CTR * 4, PT_XER * 4, PT_FPSCR * 4 +#endif + }; static int ppc_cannot_store_register (int regno) { +#ifndef __SPE__ /* Some kernels do not allow us to store fpscr. */ if (regno == find_regno ("fpscr")) return 2; +#endif return 0; } @@ -113,7 +131,101 @@ static void ppc_fill_gregset (void *buf) collect_register (i, (char *) buf + ppc_regmap[i]); } +#ifdef __ALTIVEC__ + +#ifndef PTRACE_GETVRREGS +#define PTRACE_GETVRREGS 18 +#define PTRACE_SETVRREGS 19 +#endif + +#define SIZEOF_VRREGS 33*16+4 + +static void +ppc_fill_vrregset (void *buf) +{ + int i, base; + char *regset = buf; + + base = find_regno ("vr0"); + for (i = 0; i < 32; i++) + collect_register (base + i, ®set[i * 16]); + + collect_register_by_name ("vscr", ®set[32 * 16 + 12]); + collect_register_by_name ("vrsave", ®set[33 * 16]); +} + +static void +ppc_store_vrregset (const void *buf) +{ + int i, base; + const char *regset = buf; + + base = find_regno ("vr0"); + for (i = 0; i < 32; i++) + supply_register (base + i, ®set[i * 16]); + + supply_register_by_name ("vscr", ®set[32 * 16 + 12]); + supply_register_by_name ("vrsave", ®set[33 * 16]); +} + +#endif /* __ALTIVEC__ */ + +#ifdef __SPE__ + +#ifndef PTRACE_GETEVRREGS +#define PTRACE_GETEVRREGS 20 +#define PTRACE_SETEVRREGS 21 +#endif + +struct gdb_evrregset_t +{ + unsigned long evr[32]; + unsigned long long acc; + unsigned long spefscr; +}; + +static void +ppc_fill_evrregset (void *buf) +{ + int i, ev0; + struct gdb_evrregset_t *regset = buf; + + ev0 = find_regno ("ev0h"); + for (i = 0; i < 32; i++) + collect_register (ev0 + i, ®set->evr[i]); + + collect_register_by_name ("acc", ®set->acc); + collect_register_by_name ("spefscr", ®set->spefscr); +} + +static void +ppc_store_evrregset (const void *buf) +{ + int i, ev0; + const struct gdb_evrregset_t *regset = buf; + + ev0 = find_regno ("ev0h"); + for (i = 0; i < 32; i++) + supply_register (ev0 + i, ®set->evr[i]); + + supply_register_by_name ("acc", ®set->acc); + supply_register_by_name ("spefscr", ®set->spefscr); +} +#endif /* __SPE__ */ + struct regset_info target_regsets[] = { + /* List the extra register sets before GENERAL_REGS. That way we will + fetch them every time, but still fall back to PTRACE_PEEKUSER for the + general registers. Some kernels support these, but not the newer + PPC_PTRACE_GETREGS. */ +#ifdef __ALTIVEC__ + { PTRACE_GETVRREGS, PTRACE_SETVRREGS, SIZEOF_VRREGS, EXTENDED_REGS, + ppc_fill_vrregset, ppc_store_vrregset }, +#endif +#ifdef __SPE__ + { PTRACE_GETEVRREGS, PTRACE_SETEVRREGS, 32 * 4 + 8 + 4, EXTENDED_REGS, + ppc_fill_evrregset, ppc_store_evrregset }, +#endif { 0, 0, 0, GENERAL_REGS, ppc_fill_gregset, NULL }, { 0, 0, -1, -1, NULL, NULL } }; Index: src/gdb/gdbserver/configure.ac =================================================================== --- src.orig/gdb/gdbserver/configure.ac 2007-10-04 14:23:57.000000000 -0400 +++ src/gdb/gdbserver/configure.ac 2007-10-04 16:06:09.000000000 -0400 @@ -81,6 +81,28 @@ got it [gdb_cv_arm_iwmmxt=no]) CPPFLAGS="$save_CPPFLAGS"]) ;; + powerpc*-*-*) + AC_CACHE_CHECK([if Altivec is selected], [gdb_cv_ppc_altivec], + [save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $CFLAGS" + AC_EGREP_CPP([got it], [ +#ifdef __ALTIVEC__ +got it +#endif + ], [gdb_cv_ppc_altivec=yes], + [gdb_cv_ppc_altivec=no]) + CPPFLAGS="$save_CPPFLAGS"]) + AC_CACHE_CHECK([if SPE is selected], [gdb_cv_ppc_spe], + [save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $CFLAGS" + AC_EGREP_CPP([got it], [ +#ifdef __SPE__ +got it +#endif + ], [gdb_cv_ppc_spe=yes], + [gdb_cv_ppc_spe=no]) + CPPFLAGS="$save_CPPFLAGS"]) + ;; esac . ${srcdir}/configure.srv Index: src/gdb/gdbserver/linux-ppc64-low.c =================================================================== --- src.orig/gdb/gdbserver/linux-ppc64-low.c 2007-10-04 14:23:57.000000000 -0400 +++ src/gdb/gdbserver/linux-ppc64-low.c 2007-10-04 16:06:09.000000000 -0400 @@ -109,7 +109,54 @@ static void ppc_fill_gregset (void *buf) collect_register (i, (char *) buf + ppc_regmap[i]); } +#ifdef __ALTIVEC__ + +#ifndef PTRACE_GETVRREGS +#define PTRACE_GETVRREGS 18 +#define PTRACE_SETVRREGS 19 +#endif + +#define SIZEOF_VRREGS 33*16+4 + +static void +ppc_fill_vrregset (void *buf) +{ + int i, base; + char *regset = buf; + + base = find_regno ("vr0"); + for (i = 0; i < 32; i++) + collect_register (base + i, ®set[i * 16]); + + collect_register_by_name ("vscr", ®set[32 * 16 + 12]); + collect_register_by_name ("vrsave", ®set[33 * 16]); +} + +static void +ppc_store_vrregset (const void *buf) +{ + int i, base; + const char *regset = buf; + + base = find_regno ("vr0"); + for (i = 0; i < 32; i++) + supply_register (base + i, ®set[i * 16]); + + supply_register_by_name ("vscr", ®set[32 * 16 + 12]); + supply_register_by_name ("vrsave", ®set[33 * 16]); +} + +#endif /* __ALTIVEC__ */ + struct regset_info target_regsets[] = { + /* List the extra register sets before GENERAL_REGS. That way we will + fetch them every time, but still fall back to PTRACE_PEEKUSER for the + general registers. Some kernels support these, but not the newer + PPC_PTRACE_GETREGS. */ +#ifdef __ALTIVEC__ + { PTRACE_GETVRREGS, PTRACE_SETVRREGS, SIZEOF_VRREGS, EXTENDED_REGS, + ppc_fill_vrregset, ppc_store_vrregset }, +#endif { 0, 0, 0, GENERAL_REGS, ppc_fill_gregset, NULL }, { 0, 0, -1, -1, NULL, NULL } }; Index: src/gdb/features/Makefile =================================================================== --- src.orig/gdb/features/Makefile 2007-10-04 14:23:57.000000000 -0400 +++ src/gdb/features/Makefile 2007-10-04 16:06:09.000000000 -0400 @@ -31,12 +31,16 @@ # in the GDB repository. To generate C files: # make GDB=/path/to/gdb XMLTOC="xml files" cfiles -WHICH = arm-with-iwmmxt mips-linux mips64-linux +WHICH = arm-with-iwmmxt mips-linux mips64-linux \ + rs6000/powerpc-32 rs6000/powerpc-e500 rs6000/powerpc-64 # Record which registers should be sent to GDB by default after stop. arm-with-iwmmxt-expedite = r11,sp,pc mips-linux-expedite = r29,pc mips64-linux-expedite = r29,pc +rs6000/powerpc-32-expedite = r1,pc +rs6000/powerpc-e500-expedite = r1,pc +rs6000/powerpc-64-expedite = r1,pc XSLTPROC = xsltproc outdir = ../regformats @@ -50,9 +54,9 @@ all: $(OUTPUTS) $(outdir)/%.dat: %.xml number-regs.xsl sort-regs.xsl gdbserver-regs.xsl echo "# DO NOT EDIT: generated from $<" > $(outdir)/$*.tmp - echo "name:`echo $* | sed 's/-/_/g'`" >> $(outdir)/$*.tmp + echo "name:`echo $(notdir $*) | sed 's/-/_/g'`" >> $(outdir)/$*.tmp echo "expedite:$($*-expedite)" >> $(outdir)/$*.tmp - $(XSLTPROC) --xinclude number-regs.xsl $< | \ + $(XSLTPROC) --path "$(PWD)" --xinclude number-regs.xsl $< | \ $(XSLTPROC) sort-regs.xsl - | \ $(XSLTPROC) gdbserver-regs.xsl - >> $(outdir)/$*.tmp sh ../../move-if-change $(outdir)/$*.tmp $(outdir)/$*.dat Index: src/gdb/regformats/rs6000/powerpc-32.dat =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ src/gdb/regformats/rs6000/powerpc-32.dat 2007-10-04 16:06:09.000000000 -0400 @@ -0,0 +1,108 @@ +# DO NOT EDIT: generated from rs6000/powerpc-32.xml +name:powerpc_32 +expedite:r1,pc +32:r0 +32:r1 +32:r2 +32:r3 +32:r4 +32:r5 +32:r6 +32:r7 +32:r8 +32:r9 +32:r10 +32:r11 +32:r12 +32:r13 +32:r14 +32:r15 +32:r16 +32:r17 +32:r18 +32:r19 +32:r20 +32:r21 +32:r22 +32:r23 +32:r24 +32:r25 +32:r26 +32:r27 +32:r28 +32:r29 +32:r30 +32:r31 +64:f0 +64:f1 +64:f2 +64:f3 +64:f4 +64:f5 +64:f6 +64:f7 +64:f8 +64:f9 +64:f10 +64:f11 +64:f12 +64:f13 +64:f14 +64:f15 +64:f16 +64:f17 +64:f18 +64:f19 +64:f20 +64:f21 +64:f22 +64:f23 +64:f24 +64:f25 +64:f26 +64:f27 +64:f28 +64:f29 +64:f30 +64:f31 +32:pc +32:msr +32:cr +32:lr +32:ctr +32:xer +32:fpscr +128:vr0 +128:vr1 +128:vr2 +128:vr3 +128:vr4 +128:vr5 +128:vr6 +128:vr7 +128:vr8 +128:vr9 +128:vr10 +128:vr11 +128:vr12 +128:vr13 +128:vr14 +128:vr15 +128:vr16 +128:vr17 +128:vr18 +128:vr19 +128:vr20 +128:vr21 +128:vr22 +128:vr23 +128:vr24 +128:vr25 +128:vr26 +128:vr27 +128:vr28 +128:vr29 +128:vr30 +128:vr31 +32:vscr +32:vrsave Index: src/gdb/regformats/rs6000/powerpc-64.dat =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ src/gdb/regformats/rs6000/powerpc-64.dat 2007-10-04 16:06:09.000000000 -0400 @@ -0,0 +1,108 @@ +# DO NOT EDIT: generated from rs6000/powerpc-64.xml +name:powerpc_64 +expedite:r1,pc +64:r0 +64:r1 +64:r2 +64:r3 +64:r4 +64:r5 +64:r6 +64:r7 +64:r8 +64:r9 +64:r10 +64:r11 +64:r12 +64:r13 +64:r14 +64:r15 +64:r16 +64:r17 +64:r18 +64:r19 +64:r20 +64:r21 +64:r22 +64:r23 +64:r24 +64:r25 +64:r26 +64:r27 +64:r28 +64:r29 +64:r30 +64:r31 +64:f0 +64:f1 +64:f2 +64:f3 +64:f4 +64:f5 +64:f6 +64:f7 +64:f8 +64:f9 +64:f10 +64:f11 +64:f12 +64:f13 +64:f14 +64:f15 +64:f16 +64:f17 +64:f18 +64:f19 +64:f20 +64:f21 +64:f22 +64:f23 +64:f24 +64:f25 +64:f26 +64:f27 +64:f28 +64:f29 +64:f30 +64:f31 +64:pc +64:msr +32:cr +64:lr +64:ctr +32:xer +32:fpscr +128:vr0 +128:vr1 +128:vr2 +128:vr3 +128:vr4 +128:vr5 +128:vr6 +128:vr7 +128:vr8 +128:vr9 +128:vr10 +128:vr11 +128:vr12 +128:vr13 +128:vr14 +128:vr15 +128:vr16 +128:vr17 +128:vr18 +128:vr19 +128:vr20 +128:vr21 +128:vr22 +128:vr23 +128:vr24 +128:vr25 +128:vr26 +128:vr27 +128:vr28 +128:vr29 +128:vr30 +128:vr31 +32:vscr +32:vrsave Index: src/gdb/regformats/rs6000/powerpc-e500.dat =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ src/gdb/regformats/rs6000/powerpc-e500.dat 2007-10-04 16:06:09.000000000 -0400 @@ -0,0 +1,76 @@ +# DO NOT EDIT: generated from rs6000/powerpc-e500.xml +name:powerpc_e500 +expedite:r1,pc +32:r0 +32:r1 +32:r2 +32:r3 +32:r4 +32:r5 +32:r6 +32:r7 +32:r8 +32:r9 +32:r10 +32:r11 +32:r12 +32:r13 +32:r14 +32:r15 +32:r16 +32:r17 +32:r18 +32:r19 +32:r20 +32:r21 +32:r22 +32:r23 +32:r24 +32:r25 +32:r26 +32:r27 +32:r28 +32:r29 +32:r30 +32:r31 +32:ev0h +32:ev1h +32:ev2h +32:ev3h +32:ev4h +32:ev5h +32:ev6h +32:ev7h +32:ev8h +32:ev9h +32:ev10h +32:ev11h +32:ev12h +32:ev13h +32:ev14h +32:ev15h +32:ev16h +32:ev17h +32:ev18h +32:ev19h +32:ev20h +32:ev21h +32:ev22h +32:ev23h +32:ev24h +32:ev25h +32:ev26h +32:ev27h +32:ev28h +32:ev29h +32:ev30h +32:ev31h +32:pc +32:msr +32:cr +32:lr +32:ctr +32:xer +0: +64:acc +32:spefscr