* Makefile.in (clean): Remove new files.
authorDaniel Jacobowitz <drow@false.org>
Mon, 15 Oct 2007 19:58:17 +0000 (19:58 +0000)
committerDaniel Jacobowitz <drow@false.org>
Mon, 15 Oct 2007 19:58:17 +0000 (19:58 +0000)
(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.

12 files changed:
gdb/ChangeLog
gdb/features/Makefile
gdb/gdbserver/ChangeLog
gdb/gdbserver/Makefile.in
gdb/gdbserver/configure
gdb/gdbserver/configure.ac
gdb/gdbserver/configure.srv
gdb/gdbserver/linux-ppc-low.c
gdb/gdbserver/linux-ppc64-low.c
gdb/regformats/rs6000/powerpc-32.dat [new file with mode: 0644]
gdb/regformats/rs6000/powerpc-64.dat [new file with mode: 0644]
gdb/regformats/rs6000/powerpc-e500.dat [new file with mode: 0644]

index c8f1e9ea3098432fdacd84370207b19ea2d4bd87..9c441c285e43b49a8745e526bd5f0cf80db893e3 100644 (file)
@@ -1,3 +1,12 @@
+2007-10-15  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * 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.
+
 2007-10-15  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * ppc-linux-nat.c (ppc_linux_read_description): New.
index b81c1b82bfb7c058774cd81867362c30f3f47c59..ab8a1a19ed2311c4d7032df6b07928588c9ff65e 100644 (file)
 # 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 c56f22f87d2e655eed280d3f90709b7759bf8074..bafe109e1e05be3e2b8c49e27fd62f22fce83f73 100644 (file)
@@ -1,3 +1,24 @@
+2007-10-15  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * 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.
+
 2007-09-19  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * linux-low.c (O_LARGEFILE): Define.
index 4ebf508304645a88b1064872ed72ef3ab919b158..a9ccf0e02394d88a1595af84d8816d78367d2718 100644 (file)
@@ -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-ppc.dat $(regdat_sh)
 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 a283dcfbff6812de80d765dd0ae63778364f10a6..0b5ed9d87c6d74c3015f9507022a096114aae940 100755 (executable)
@@ -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 de996ba8d2e5b3ee82b3cb719f195fbf859bd1de..4e94f3146b3211ecf2c516285ebb71993cb52f89 100644 (file)
@@ -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 f62d276c184ef1f5db45617b173d27a7784f9ab7..24ee308977689fc23351c18d212032453a730110 100644 (file)
@@ -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
+                       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_regobj=reg-ppc.o
-                       srv_tgtobj="linux-low.o linux-ppc-low.o"
+  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 ed8cdc1e4fa5abdc3ebb68ad4912fa78e0ba89fc..14ee29bf2d17be6daba90cd99dd03e5d40410cec 100644 (file)
@@ -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, &regset[i * 16]);
+
+  collect_register_by_name ("vscr", &regset[32 * 16 + 12]);
+  collect_register_by_name ("vrsave", &regset[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, &regset[i * 16]);
+
+  supply_register_by_name ("vscr", &regset[32 * 16 + 12]);
+  supply_register_by_name ("vrsave", &regset[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, &regset->evr[i]);
+
+  collect_register_by_name ("acc", &regset->acc);
+  collect_register_by_name ("spefscr", &regset->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, &regset->evr[i]);
+
+  supply_register_by_name ("acc", &regset->acc);
+  supply_register_by_name ("spefscr", &regset->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 9f6de8285f34c7b3e047c9363d8155c5da389ced..934ac4624beb7cdef06b49c4904ec0c3ac49e365 100644 (file)
@@ -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, &regset[i * 16]);
+
+  collect_register_by_name ("vscr", &regset[32 * 16 + 12]);
+  collect_register_by_name ("vrsave", &regset[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, &regset[i * 16]);
+
+  supply_register_by_name ("vscr", &regset[32 * 16 + 12]);
+  supply_register_by_name ("vrsave", &regset[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 }
 };
diff --git a/gdb/regformats/rs6000/powerpc-32.dat b/gdb/regformats/rs6000/powerpc-32.dat
new file mode 100644 (file)
index 0000000..80dd9f3
--- /dev/null
@@ -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
diff --git a/gdb/regformats/rs6000/powerpc-64.dat b/gdb/regformats/rs6000/powerpc-64.dat
new file mode 100644 (file)
index 0000000..00573d3
--- /dev/null
@@ -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
diff --git a/gdb/regformats/rs6000/powerpc-e500.dat b/gdb/regformats/rs6000/powerpc-e500.dat
new file mode 100644 (file)
index 0000000..5d33c59
--- /dev/null
@@ -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