Mark Wielaard 365520
commit 42d961c3744b2afb236c4fd3d2b59eb61421b9a8
Mark Wielaard 365520
Author: carll <carll@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Mark Wielaard 365520
Date:   Thu Apr 21 18:21:26 2016 +0000
Mark Wielaard 365520
Mark Wielaard 365520
    PPC64, Valgrind with GDB does not display 64-bit and 128-bit registers
Mark Wielaard 365520
    correctly
Mark Wielaard 365520
    
Mark Wielaard 365520
    1)  Fix Endianess issue that was missed in the BE to LE port.  GDB was
Mark Wielaard 365520
        not displaying the contents of the 64-bit and 128-bit registers
Mark Wielaard 365520
        correctly due to an Endianess issue.
Mark Wielaard 365520
    
Mark Wielaard 365520
    2)  Fix displaying the shadow registers for the 64-bit and 128-bit
Mark Wielaard 365520
        registers.
Mark Wielaard 365520
    
Mark Wielaard 365520
    Bugzilla 360008 was opened for this issue.
Mark Wielaard 365520
    
Mark Wielaard 365520
    git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15864 a5019735-40e9-0310-863c-91ae7b9d1cf9
Mark Wielaard 365520
Mark Wielaard 365520
diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am
Mark Wielaard 365520
index d29f954..00d9fc7 100644
Mark Wielaard 365520
--- a/coregrind/Makefile.am
Mark Wielaard 365520
+++ b/coregrind/Makefile.am
Mark Wielaard 365520
@@ -605,12 +605,17 @@ GDBSERVER_XML_FILES = \
Mark Wielaard 365520
 	m_gdbserver/power64-core-valgrind-s1.xml \
Mark Wielaard 365520
 	m_gdbserver/power64-core-valgrind-s2.xml \
Mark Wielaard 365520
 	m_gdbserver/power64-core.xml \
Mark Wielaard 365520
+	m_gdbserver/power64-core2-valgrind-s1.xml \
Mark Wielaard 365520
+	m_gdbserver/power64-core2-valgrind-s2.xml \
Mark Wielaard 365520
 	m_gdbserver/power64-linux-valgrind-s1.xml \
Mark Wielaard 365520
 	m_gdbserver/power64-linux-valgrind-s2.xml \
Mark Wielaard 365520
 	m_gdbserver/power64-linux.xml \
Mark Wielaard 365520
 	m_gdbserver/power-altivec-valgrind-s1.xml \
Mark Wielaard 365520
 	m_gdbserver/power-altivec-valgrind-s2.xml \
Mark Wielaard 365520
 	m_gdbserver/power-altivec.xml \
Mark Wielaard 365520
+	m_gdbserver/power-vsx-valgrind-s1.xml \
Mark Wielaard 365520
+	m_gdbserver/power-vsx-valgrind-s2.xml \
Mark Wielaard 365520
+	m_gdbserver/power-vsx.xml \
Mark Wielaard 365520
 	m_gdbserver/power-core-valgrind-s1.xml \
Mark Wielaard 365520
 	m_gdbserver/power-core-valgrind-s2.xml \
Mark Wielaard 365520
 	m_gdbserver/power-core.xml \
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/power-altivec.xml b/coregrind/m_gdbserver/power-altivec.xml
Mark Wielaard 365520
index 45d31af..d416075 100644
Mark Wielaard 365520
--- a/coregrind/m_gdbserver/power-altivec.xml
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/power-altivec.xml
Mark Wielaard 365520
@@ -19,7 +19,7 @@
Mark Wielaard 365520
     <field name="v16_int8" type="v16i8"/>
Mark Wielaard 365520
   </union>
Mark Wielaard 365520
 
Mark Wielaard 365520
-  <reg name="vr0" bitsize="128" type="vec128"/>
Mark Wielaard 365520
+  <reg name="vr0" bitsize="128" type="vec128" regnum="73"/>
Mark Wielaard 365520
   <reg name="vr1" bitsize="128" type="vec128"/>
Mark Wielaard 365520
   <reg name="vr2" bitsize="128" type="vec128"/>
Mark Wielaard 365520
   <reg name="vr3" bitsize="128" type="vec128"/>
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/power-fpu-valgrind-s1.xml b/coregrind/m_gdbserver/power-fpu-valgrind-s1.xml
Mark Wielaard 365520
index 00d9108..a23d550 100644
Mark Wielaard 365520
--- a/coregrind/m_gdbserver/power-fpu-valgrind-s1.xml
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/power-fpu-valgrind-s1.xml
Mark Wielaard 365520
@@ -7,7 +7,7 @@
Mark Wielaard 365520
 
Mark Wielaard 365520
 
Mark Wielaard 365520
 <feature name="org.gnu.gdb.power.fpu-valgrind-s1">
Mark Wielaard 365520
-  <reg name="f0s1" bitsize="64" type="uint64" regnum="32"/>
Mark Wielaard 365520
+  <reg name="f0s1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
   <reg name="f1s1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
   <reg name="f2s1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
   <reg name="f3s1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
@@ -40,5 +40,5 @@
Mark Wielaard 365520
   <reg name="f30s1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
   <reg name="f31s1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
 
Mark Wielaard 365520
-  <reg name="fpscrs1" bitsize="32" group="float" regnum="70"/>
Mark Wielaard 365520
+  <reg name="fpscrs1" bitsize="32" group="float"/>
Mark Wielaard 365520
 </feature>
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/power-fpu-valgrind-s2.xml b/coregrind/m_gdbserver/power-fpu-valgrind-s2.xml
Mark Wielaard 365520
index a12fa6e..45e434c 100644
Mark Wielaard 365520
--- a/coregrind/m_gdbserver/power-fpu-valgrind-s2.xml
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/power-fpu-valgrind-s2.xml
Mark Wielaard 365520
@@ -7,7 +7,7 @@
Mark Wielaard 365520
 
Mark Wielaard 365520
 
Mark Wielaard 365520
 <feature name="org.gnu.gdb.power.fpu-valgrind-s2">
Mark Wielaard 365520
-  <reg name="f0s2" bitsize="64" type="uint64" regnum="32"/>
Mark Wielaard 365520
+  <reg name="f0s2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
   <reg name="f1s2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
   <reg name="f2s2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
   <reg name="f3s2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
@@ -40,5 +40,5 @@
Mark Wielaard 365520
   <reg name="f30s2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
   <reg name="f31s2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
 
Mark Wielaard 365520
-  <reg name="fpscrs2" bitsize="32" group="float" regnum="70"/>
Mark Wielaard 365520
+  <reg name="fpscrs2" bitsize="32" group="float"/>
Mark Wielaard 365520
 </feature>
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/power64-core-valgrind-s1.xml b/coregrind/m_gdbserver/power64-core-valgrind-s1.xml
Mark Wielaard 365520
index f6296bf..857e9da 100644
Mark Wielaard 365520
--- a/coregrind/m_gdbserver/power64-core-valgrind-s1.xml
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/power64-core-valgrind-s1.xml
Mark Wielaard 365520
@@ -40,10 +40,29 @@
Mark Wielaard 365520
   <reg name="r30s1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
   <reg name="r31s1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
 
Mark Wielaard 365520
-  <reg name="pcs1" bitsize="64" type="code_ptr" regnum="64"/>
Mark Wielaard 365520
+
Mark Wielaard 365520
+      GPRs followed by the floating point registers then the pc, msr, ...
Mark Wielaard 365520
+      registers. If the shadow GPRs and shadow pc/msr/cr... register
Mark Wielaard 365520
+      definitions are all in this file, as is done with the non-shadow register
Mark Wielaard 365520
+      definitions, the shadow register name print order changes to GPRs,
Mark Wielaard 365520
+      followed by pc/msr/cr... then the floating point registers.  Note, the
Mark Wielaard 365520
+      contents of the shadow registers still print in this same order as the
Mark Wielaard 365520
+      non-shadow registers values resulting in the shadow register names and
Mark Wielaard 365520
+      shadow register values not correctly aligning.
Mark Wielaard 365520
+
Mark Wielaard 365520
+      In order to get, the shadow register names to print in the same order
Mark Wielaard 365520
+      as the non-shadow register and correctly align with their contents,
Mark Wielaard 365520
+      the following register definitions were moved to the file
Mark Wielaard 365520
+      power64-core2-valgrind-s1.xml. The new file is included after the shadow
Mark Wielaard 365520
+      floating point XML definition file. By doing this, we get GDB to print
Mark Wielaard 365520
+      the shadow register names in the same order as the non-shadow register
Mark Wielaard 365520
+      names and thus correctly align with the order that the shadow register
Mark Wielaard 365520
+      contents are printed.   -->
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
   <reg name="msrs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
   <reg name="crs1" bitsize="32" type="uint32"/>
Mark Wielaard 365520
   <reg name="lrs1" bitsize="64" type="code_ptr"/>
Mark Wielaard 365520
   <reg name="ctrs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
-  <reg name="xers1" bitsize="32" type="uint32"/>
Mark Wielaard 365520
+  <reg name="xers1" bitsize="32" type="uint32"/> -->
Mark Wielaard 365520
 </feature>
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/power64-core-valgrind-s2.xml b/coregrind/m_gdbserver/power64-core-valgrind-s2.xml
Mark Wielaard 365520
index 663232e..3825c67 100644
Mark Wielaard 365520
--- a/coregrind/m_gdbserver/power64-core-valgrind-s2.xml
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/power64-core-valgrind-s2.xml
Mark Wielaard 365520
@@ -40,10 +40,29 @@
Mark Wielaard 365520
   <reg name="r30s2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
   <reg name="r31s2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
 
Mark Wielaard 365520
-  <reg name="pcs2" bitsize="64" type="code_ptr" regnum="64"/>
Mark Wielaard 365520
+
Mark Wielaard 365520
+      GPRs followed by the floating point registers then the pc, msr, ...
Mark Wielaard 365520
+      registers. If the shadow GPRs and shadow pc/msr/cr... register
Mark Wielaard 365520
+      definitions are all in this file, as is done with the non-shadow register
Mark Wielaard 365520
+      definitions, the shadow register name print order changes to GPRs,
Mark Wielaard 365520
+      followed by pc/msr/cr... then the floating point registers.  Note, the
Mark Wielaard 365520
+      contents of the shadow registers still print in this same order as the
Mark Wielaard 365520
+      non-shadow registers values resulting in the shadow register names and
Mark Wielaard 365520
+      shadow register values not correctly aligning.
Mark Wielaard 365520
+
Mark Wielaard 365520
+      In order to get, the shadow register names to print in the same order
Mark Wielaard 365520
+      as the non-shadow register and correctly align with their contents,
Mark Wielaard 365520
+      the following register definitions were moved to the file
Mark Wielaard 365520
+      power64-core2-valgrind-s2.xml. The new file is included after the shadow
Mark Wielaard 365520
+      floating point XML definition file. By doing this, we get GDB to print
Mark Wielaard 365520
+      the shadow register names in the same order as the non-shadow register
Mark Wielaard 365520
+      names and thus correctly align with the order that the shadow register
Mark Wielaard 365520
+      contents are printed.   -->
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
   <reg name="msrs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
   <reg name="crs2" bitsize="32" type="uint32"/>
Mark Wielaard 365520
   <reg name="lrs2" bitsize="64" type="code_ptr"/>
Mark Wielaard 365520
   <reg name="ctrs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
-  <reg name="xers2" bitsize="32" type="uint32"/>
Mark Wielaard 365520
+  <reg name="xers2" bitsize="32" type="uint32"/>  -->
Mark Wielaard 365520
 </feature>
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/power64-core.xml b/coregrind/m_gdbserver/power64-core.xml
Mark Wielaard 365520
index e0a6ee3..c5cfb3b 100644
Mark Wielaard 365520
--- a/coregrind/m_gdbserver/power64-core.xml
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/power64-core.xml
Mark Wielaard 365520
@@ -40,6 +40,13 @@
Mark Wielaard 365520
   <reg name="r30" bitsize="64" type="uint64"/>
Mark Wielaard 365520
   <reg name="r31" bitsize="64" type="uint64"/>
Mark Wielaard 365520
 
Mark Wielaard 365520
+
Mark Wielaard 365520
+     the "standard target features" for this processor.  GDB will reject
Mark Wielaard 365520
+     this file description if the following register definitions are
Mark Wielaard 365520
+     not in this file.  Hence, they can't be moved to power64-core2.xml
Mark Wielaard 365520
+     for consistency with what was done for the shadow register definitions
Mark Wielaard 365520
+     to get the shadow register print order to match the print order of
Mark Wielaard 365520
+     the HW registers -->
Mark Wielaard 365520
   <reg name="pc" bitsize="64" type="code_ptr" regnum="64"/>
Mark Wielaard 365520
   <reg name="msr" bitsize="64" type="uint64"/>
Mark Wielaard 365520
   <reg name="cr" bitsize="32" type="uint32"/>
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/power64-linux-valgrind-s1.xml b/coregrind/m_gdbserver/power64-linux-valgrind-s1.xml
Mark Wielaard 365520
index 7f1d0ac..736c1e7 100644
Mark Wielaard 365520
--- a/coregrind/m_gdbserver/power64-linux-valgrind-s1.xml
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/power64-linux-valgrind-s1.xml
Mark Wielaard 365520
@@ -7,6 +7,6 @@
Mark Wielaard 365520
 
Mark Wielaard 365520
 
Mark Wielaard 365520
 <feature name="org.gnu.gdb.power.linux-valgrind-s1">
Mark Wielaard 365520
-  <reg name="orig_r3s1" bitsize="64" regnum="71"/>
Mark Wielaard 365520
+  <reg name="orig_r3s1" bitsize="64"/>
Mark Wielaard 365520
   <reg name="traps1" bitsize="64"/>
Mark Wielaard 365520
 </feature>
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/power64-linux-valgrind-s2.xml b/coregrind/m_gdbserver/power64-linux-valgrind-s2.xml
Mark Wielaard 365520
index 007bd04..626a59c 100644
Mark Wielaard 365520
--- a/coregrind/m_gdbserver/power64-linux-valgrind-s2.xml
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/power64-linux-valgrind-s2.xml
Mark Wielaard 365520
@@ -7,6 +7,6 @@
Mark Wielaard 365520
 
Mark Wielaard 365520
 
Mark Wielaard 365520
 <feature name="org.gnu.gdb.power.linux-valgrind-s2">
Mark Wielaard 365520
-  <reg name="orig_r3s2" bitsize="64" regnum="71"/>
Mark Wielaard 365520
+  <reg name="orig_r3s2" bitsize="64"/>
Mark Wielaard 365520
   <reg name="traps2" bitsize="64"/>
Mark Wielaard 365520
 </feature>
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/powerpc-altivec64l-valgrind.xml b/coregrind/m_gdbserver/powerpc-altivec64l-valgrind.xml
Mark Wielaard 365520
index a2cd615..7760e3d 100644
Mark Wielaard 365520
--- a/coregrind/m_gdbserver/powerpc-altivec64l-valgrind.xml
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/powerpc-altivec64l-valgrind.xml
Mark Wielaard 365520
@@ -16,12 +16,17 @@
Mark Wielaard 365520
   <xi:include href="power-fpu.xml"/>
Mark Wielaard 365520
   <xi:include href="power64-linux.xml"/>
Mark Wielaard 365520
   <xi:include href="power-altivec.xml"/>
Mark Wielaard 365520
+  <xi:include href="power-vsx.xml"/>
Mark Wielaard 365520
   <xi:include href="power64-core-valgrind-s1.xml"/>
Mark Wielaard 365520
   <xi:include href="power-fpu-valgrind-s1.xml"/>
Mark Wielaard 365520
+  <xi:include href="power64-core2-valgrind-s1.xml"/>
Mark Wielaard 365520
   <xi:include href="power64-linux-valgrind-s1.xml"/>
Mark Wielaard 365520
   <xi:include href="power-altivec-valgrind-s1.xml"/>
Mark Wielaard 365520
+  <xi:include href="power-vsx-valgrind-s1.xml"/>
Mark Wielaard 365520
   <xi:include href="power64-core-valgrind-s2.xml"/>
Mark Wielaard 365520
   <xi:include href="power-fpu-valgrind-s2.xml"/>
Mark Wielaard 365520
+  <xi:include href="power64-core2-valgrind-s2.xml"/>
Mark Wielaard 365520
   <xi:include href="power64-linux-valgrind-s2.xml"/>
Mark Wielaard 365520
   <xi:include href="power-altivec-valgrind-s2.xml"/>
Mark Wielaard 365520
+  <xi:include href="power-vsx-valgrind-s2.xml"/>
Mark Wielaard 365520
 </target>
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/powerpc-altivec64l.xml b/coregrind/m_gdbserver/powerpc-altivec64l.xml
Mark Wielaard 365520
index d06dad9..3fc4fda 100644
Mark Wielaard 365520
--- a/coregrind/m_gdbserver/powerpc-altivec64l.xml
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/powerpc-altivec64l.xml
Mark Wielaard 365520
@@ -16,4 +16,5 @@
Mark Wielaard 365520
   <xi:include href="power-fpu.xml"/>
Mark Wielaard 365520
   <xi:include href="power64-linux.xml"/>
Mark Wielaard 365520
   <xi:include href="power-altivec.xml"/>
Mark Wielaard 365520
+  <xi:include href="power-vsx.xml"/>
Mark Wielaard 365520
 </target>
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/valgrind-low-ppc64.c b/coregrind/m_gdbserver/valgrind-low-ppc64.c
Mark Wielaard 365520
index 3bf90b1..3c6146c 100644
Mark Wielaard 365520
--- a/coregrind/m_gdbserver/valgrind-low-ppc64.c
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/valgrind-low-ppc64.c
Mark Wielaard 365520
@@ -35,6 +35,51 @@
Mark Wielaard 365520
 
Mark Wielaard 365520
 #include "libvex_guest_ppc64.h"
Mark Wielaard 365520
 
Mark Wielaard 365520
+/* The PPC64 register layout with vs register support (Power 7 and beyond)
Mark Wielaard 365520
+   consists of 64 VSR registers of size 128-bits.  The 32 floating point
Mark Wielaard 365520
+   registers fp map to the upper 64-bits of vsr[0] to vsr[31].  The 32
Mark Wielaard 365520
+   vr[0] to vr[31] registers of size 128-bits map to vsr[31] to vsr[63].  The
Mark Wielaard 365520
+   lower 64-bits of the vsr[0] to vsr[31] registers are in the pseudo
Mark Wielaard 365520
+   registers vs[0]h to vs[31]h registers.  These pseudo registers get printed
Mark Wielaard 365520
+   by GDB but there are no instructions that directly access these registers.
Mark Wielaard 365520
+   When GDB prints the vsr[0] to vsr[31] registers it combines the contents
Mark Wielaard 365520
+   of the floating point registers fp[0] to fp[31] and its corresponding
Mark Wielaard 365520
+   vs[0]h to vs[31]h registers to display the VSR contents.  The vsr[32]
Mark Wielaard 365520
+   to vsr[63] contents are the same as the the vr[0] to vr[31] contents.
Mark Wielaard 365520
+
Mark Wielaard 365520
+   GDB also prints fp[32] to fp[63].  These are simply the upper 64 bits of
Mark Wielaard 365520
+   vsr[32] to vsr[63] however, these are not "real" floating point registers
Mark Wielaard 365520
+   as none of the floating point instructions can access these registers.
Mark Wielaard 365520
+
Mark Wielaard 365520
+    Register map.
Mark Wielaard 365520
+                  MSB          IBM bit numbering           LSB
Mark Wielaard 365520
+                   0                 63 64                127
Mark Wielaard 365520
+         vsr[0]   |        fp[0]       |       vs[0]h        |
Mark Wielaard 365520
+         vsr[1]   |        fp[1]       |       vs[1]h        |
Mark Wielaard 365520
+         vsr[2]   |        fp[2]       |       vs[2]h        |
Mark Wielaard 365520
+          ...
Mark Wielaard 365520
+         vsr[31]  |        fp[31]      |       vs[31]h       |
Mark Wielaard 365520
+         vsr[32]  |                  vr[0]                   |
Mark Wielaard 365520
+         vsr[33]  |                  vr[1]                   |
Mark Wielaard 365520
+          ...
Mark Wielaard 365520
+         vsr[63]  |                  vr[31]                  |
Mark Wielaard 365520
+
Mark Wielaard 365520
+    Note, not shown above are the fake fp[32] to fp[63] that GDB prints
Mark Wielaard 365520
+
Mark Wielaard 365520
+   Valgrind has two shadow registers for each real register denoted with
Mark Wielaard 365520
+   the suffix s1 and s2.   When printing the contents of the shadow registers,
Mark Wielaard 365520
+   GDB does not explicitly print the shadow registers vsr[0] to vsr[63]. GDB
Mark Wielaard 365520
+   prints the shadow register contents of the 32 floating point registers as
Mark Wielaard 365520
+   fp[0]s1 to fp[31]s1 and fp[0]s2 to fp[31]s2.  The shadow register contents
Mark Wielaard 365520
+   of vs[0]hs1 to vs[31]hs1 and vs[0]hs2 to vs[31]hs2 are also printed.  The
Mark Wielaard 365520
+   user needs to construct the vsr[i]s1 shadow register contents by looking
Mark Wielaard 365520
+   at fp[i]s1 for the upper 64-bits and vs[i]hs1 for the lower 64-bits.  The
Mark Wielaard 365520
+   vsr[i]s2 shadow register contents are constructed similarly.
Mark Wielaard 365520
+
Mark Wielaard 365520
+   GDB prints the 128-bit shadow register contents of the 32 vr registers as
Mark Wielaard 365520
+   vr[0]s1 to vr[31]s1 and vr[0]s2 to vr[31]s2. These are also the value of the
Mark Wielaard 365520
+   VSR shadow registers vsr[32]s1 to vsr[63]s1 and vsr[32]s2 to vsr[63]s2. */
Mark Wielaard 365520
+
Mark Wielaard 365520
 static struct reg regs[] = {
Mark Wielaard 365520
   { "r0", 0, 64 },
Mark Wielaard 365520
   { "r1", 64, 64 },
Mark Wielaard 365520
@@ -143,7 +188,40 @@ static struct reg regs[] = {
Mark Wielaard 365520
   { "vr31", 8544, 128 },
Mark Wielaard 365520
   { "vscr", 8672, 32 },
Mark Wielaard 365520
   { "vrsave", 8704, 32 },
Mark Wielaard 365520
+  { "vs0h", 8736, 64 },
Mark Wielaard 365520
+  { "vs1h", 8800, 64 },
Mark Wielaard 365520
+  { "vs2h", 8864, 64 },
Mark Wielaard 365520
+  { "vs3h", 8928, 64 },
Mark Wielaard 365520
+  { "vs4h", 8992, 64 },
Mark Wielaard 365520
+  { "vs5h", 9056, 64 },
Mark Wielaard 365520
+  { "vs6h", 9120, 64 },
Mark Wielaard 365520
+  { "vs7h", 9184, 64 },
Mark Wielaard 365520
+  { "vs8h", 9248, 64 },
Mark Wielaard 365520
+  { "vs9h", 9312, 64 },
Mark Wielaard 365520
+  { "vs10h", 9376, 64 },
Mark Wielaard 365520
+  { "vs11h", 9440, 64 },
Mark Wielaard 365520
+  { "vs12h", 9504, 64 },
Mark Wielaard 365520
+  { "vs13h", 9568, 64 },
Mark Wielaard 365520
+  { "vs14h", 9632, 64 },
Mark Wielaard 365520
+  { "vs15h", 9696, 64 },
Mark Wielaard 365520
+  { "vs16h", 9760, 64 },
Mark Wielaard 365520
+  { "vs17h", 9824, 64 },
Mark Wielaard 365520
+  { "vs18h", 9888, 64 },
Mark Wielaard 365520
+  { "vs19h", 9952, 64 },
Mark Wielaard 365520
+  { "vs20h", 10016, 64 },
Mark Wielaard 365520
+  { "vs21h", 10080, 64 },
Mark Wielaard 365520
+  { "vs22h", 10144, 64 },
Mark Wielaard 365520
+  { "vs23h", 10208, 64 },
Mark Wielaard 365520
+  { "vs24h", 10272, 64 },
Mark Wielaard 365520
+  { "vs25h", 10336, 64 },
Mark Wielaard 365520
+  { "vs26h", 10400, 64 },
Mark Wielaard 365520
+  { "vs27h", 10464, 64 },
Mark Wielaard 365520
+  { "vs28h", 10528, 64 },
Mark Wielaard 365520
+  { "vs29h", 10592, 64 },
Mark Wielaard 365520
+  { "vs30h", 10656, 64 },
Mark Wielaard 365520
+  { "vs31h", 10720, 64 },
Mark Wielaard 365520
 };
Mark Wielaard 365520
+
Mark Wielaard 365520
 static const char *expedite_regs[] = { "r1", "pc", 0 };
Mark Wielaard 365520
 #define num_regs (sizeof (regs) / sizeof (regs[0]))
Mark Wielaard 365520
 
Mark Wielaard 365520
@@ -178,11 +256,42 @@ void transfer_register (ThreadId tid, int abs_regno, void * buf,
Mark Wielaard 365520
    ThreadState* tst = VG_(get_ThreadState)(tid);
Mark Wielaard 365520
    int set = abs_regno / num_regs;
Mark Wielaard 365520
    int regno = abs_regno % num_regs;
Mark Wielaard 365520
+   int low_offset, high_offset;
Mark Wielaard 365520
+
Mark Wielaard 365520
    *mod = False;
Mark Wielaard 365520
 
Mark Wielaard 365520
    VexGuestPPC64State* ppc64 = (VexGuestPPC64State*) get_arch (set, tst);
Mark Wielaard 365520
 
Mark Wielaard 365520
-   switch (regno) { 
Mark Wielaard 365520
+
Mark Wielaard 365520
+#if defined (VG_LITTLEENDIAN)
Mark Wielaard 365520
+   /* Fetch the 64-bits for the VR registers (VSR[32] to VSR[63] stored as
Mark Wielaard 365520
+    * Little Endian. The 128-bit value is stored as an array of four 32-bit
Mark Wielaard 365520
+    * values.  The lower 32-bits are in element 0 in Little Endian format.
Mark Wielaard 365520
+    */
Mark Wielaard 365520
+   low_offset  = 0;
Mark Wielaard 365520
+
Mark Wielaard 365520
+   /* Fetch the upper 64-bits for the floating point register stored as
Mark Wielaard 365520
+    * Little Endian.  The 128-bit value is stored as an array of four 32-bit
Mark Wielaard 365520
+    * values.  The upper 32-bits are in element 3 in Little Endian format.
Mark Wielaard 365520
+    */
Mark Wielaard 365520
+   high_offset = 2;
Mark Wielaard 365520
+#elif defined (VG_BIGENDIAN)
Mark Wielaard 365520
+   /* Fetch the 64-bits for the VR registers (VSR[32] to VSR[63] stored as
Mark Wielaard 365520
+    * Little Endian. The 128-bit value is stored as an array of four 32-bit
Mark Wielaard 365520
+    * values.  The lower 32-bits are in element 3 in Big Endian format.
Mark Wielaard 365520
+    */
Mark Wielaard 365520
+   low_offset  = 2;
Mark Wielaard 365520
+
Mark Wielaard 365520
+   /* Fetch the upper 64-bits for the floating point register stored as
Mark Wielaard 365520
+    * Little Endian.  The 128-bit value is stored as an array of four 32-bit
Mark Wielaard 365520
+    * values.  The upper 32-bits are in element 0 in Big Endian format.
Mark Wielaard 365520
+    */
Mark Wielaard 365520
+   high_offset = 0;
Mark Wielaard 365520
+#else
Mark Wielaard 365520
+#     error "Unknown endianness"
Mark Wielaard 365520
+#endif
Mark Wielaard 365520
+
Mark Wielaard 365520
+   switch (regno) {
Mark Wielaard 365520
    // numbers here have to match the order of regs above
Mark Wielaard 365520
    // Attention: gdb order does not match valgrind order.
Mark Wielaard 365520
    case 0:  VG_(transfer) (&ppc64->guest_GPR0,  buf, dir, size, mod); break;
Mark Wielaard 365520
@@ -217,44 +326,46 @@ void transfer_register (ThreadId tid, int abs_regno, void * buf,
Mark Wielaard 365520
    case 29: VG_(transfer) (&ppc64->guest_GPR29, buf, dir, size, mod); break;
Mark Wielaard 365520
    case 30: VG_(transfer) (&ppc64->guest_GPR30, buf, dir, size, mod); break;
Mark Wielaard 365520
    case 31: VG_(transfer) (&ppc64->guest_GPR31, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 32: VG_(transfer) (&ppc64->guest_VSR0,  buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 33: VG_(transfer) (&ppc64->guest_VSR1,  buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 34: VG_(transfer) (&ppc64->guest_VSR2,  buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 35: VG_(transfer) (&ppc64->guest_VSR3,  buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 36: VG_(transfer) (&ppc64->guest_VSR4,  buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 37: VG_(transfer) (&ppc64->guest_VSR5,  buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 38: VG_(transfer) (&ppc64->guest_VSR6,  buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 39: VG_(transfer) (&ppc64->guest_VSR7,  buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 40: VG_(transfer) (&ppc64->guest_VSR8,  buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 41: VG_(transfer) (&ppc64->guest_VSR9,  buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 42: VG_(transfer) (&ppc64->guest_VSR10, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 43: VG_(transfer) (&ppc64->guest_VSR11, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 44: VG_(transfer) (&ppc64->guest_VSR12, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 45: VG_(transfer) (&ppc64->guest_VSR13, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 46: VG_(transfer) (&ppc64->guest_VSR14, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 47: VG_(transfer) (&ppc64->guest_VSR15, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 48: VG_(transfer) (&ppc64->guest_VSR16, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 49: VG_(transfer) (&ppc64->guest_VSR17, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 50: VG_(transfer) (&ppc64->guest_VSR18, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 51: VG_(transfer) (&ppc64->guest_VSR19, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 52: VG_(transfer) (&ppc64->guest_VSR20, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 53: VG_(transfer) (&ppc64->guest_VSR21, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 54: VG_(transfer) (&ppc64->guest_VSR22, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 55: VG_(transfer) (&ppc64->guest_VSR23, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 56: VG_(transfer) (&ppc64->guest_VSR24, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 57: VG_(transfer) (&ppc64->guest_VSR25, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 58: VG_(transfer) (&ppc64->guest_VSR26, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 59: VG_(transfer) (&ppc64->guest_VSR27, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 60: VG_(transfer) (&ppc64->guest_VSR28, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 61: VG_(transfer) (&ppc64->guest_VSR29, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 62: VG_(transfer) (&ppc64->guest_VSR30, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 63: VG_(transfer) (&ppc64->guest_VSR31, buf, dir, size, mod); break;
Mark Wielaard 365520
+
Mark Wielaard 365520
+   case 32: VG_(transfer) (&ppc64->guest_VSR0[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 33: VG_(transfer) (&ppc64->guest_VSR1[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 34: VG_(transfer) (&ppc64->guest_VSR2[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 35: VG_(transfer) (&ppc64->guest_VSR3[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 36: VG_(transfer) (&ppc64->guest_VSR4[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 37: VG_(transfer) (&ppc64->guest_VSR5[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 38: VG_(transfer) (&ppc64->guest_VSR6[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 39: VG_(transfer) (&ppc64->guest_VSR7[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 40: VG_(transfer) (&ppc64->guest_VSR8[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 41: VG_(transfer) (&ppc64->guest_VSR9[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 42: VG_(transfer) (&ppc64->guest_VSR10[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 43: VG_(transfer) (&ppc64->guest_VSR11[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 44: VG_(transfer) (&ppc64->guest_VSR12[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 45: VG_(transfer) (&ppc64->guest_VSR13[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 46: VG_(transfer) (&ppc64->guest_VSR14[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 47: VG_(transfer) (&ppc64->guest_VSR15[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 48: VG_(transfer) (&ppc64->guest_VSR16[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 49: VG_(transfer) (&ppc64->guest_VSR17[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 50: VG_(transfer) (&ppc64->guest_VSR18[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 51: VG_(transfer) (&ppc64->guest_VSR19[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 52: VG_(transfer) (&ppc64->guest_VSR20[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 53: VG_(transfer) (&ppc64->guest_VSR21[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 54: VG_(transfer) (&ppc64->guest_VSR22[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 55: VG_(transfer) (&ppc64->guest_VSR23[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 56: VG_(transfer) (&ppc64->guest_VSR24[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 57: VG_(transfer) (&ppc64->guest_VSR25[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 58: VG_(transfer) (&ppc64->guest_VSR26[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 59: VG_(transfer) (&ppc64->guest_VSR27[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 60: VG_(transfer) (&ppc64->guest_VSR28[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 61: VG_(transfer) (&ppc64->guest_VSR29[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 62: VG_(transfer) (&ppc64->guest_VSR30[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 63: VG_(transfer) (&ppc64->guest_VSR31[high_offset],  buf, dir, size, mod); break;
Mark Wielaard 365520
+
Mark Wielaard 365520
    case 64: VG_(transfer) (&ppc64->guest_CIA,   buf, dir, size, mod); break;
Mark Wielaard 365520
    case 65: *mod = False; break; // VEX does not model Machine State Register
Mark Wielaard 365520
    case 66: {
Mark Wielaard 365520
       UInt cr = LibVEX_GuestPPC64_get_CR (ppc64);
Mark Wielaard 365520
       if (dir == valgrind_to_gdbserver) {
Mark Wielaard 365520
-         VG_(transfer) (&cr, buf, dir, size, mod); 
Mark Wielaard 365520
+         VG_(transfer) (&cr, buf, dir, size, mod);
Mark Wielaard 365520
       } else {
Mark Wielaard 365520
          UInt newcr;
Mark Wielaard 365520
          VG_(transfer) (&newcr, buf, dir, size, mod);
Mark Wielaard 365520
@@ -280,40 +391,79 @@ void transfer_register (ThreadId tid, int abs_regno, void * buf,
Mark Wielaard 365520
    case 70:  VG_(transfer) (&ppc64->guest_FPROUND, buf, dir, size, mod); break;
Mark Wielaard 365520
    case 71:  *mod = False; break; // GDBTD???? VEX { "orig_r3", 4448, 64 },
Mark Wielaard 365520
    case 72:  *mod = False; break; // GDBTD???? VEX { "trap", 4512, 64 },
Mark Wielaard 365520
-   case 73:  VG_(transfer) (&ppc64->guest_VSR32, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 74:  VG_(transfer) (&ppc64->guest_VSR33, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 75:  VG_(transfer) (&ppc64->guest_VSR34, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 76:  VG_(transfer) (&ppc64->guest_VSR35, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 77:  VG_(transfer) (&ppc64->guest_VSR36, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 78:  VG_(transfer) (&ppc64->guest_VSR37, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 79:  VG_(transfer) (&ppc64->guest_VSR38, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 80:  VG_(transfer) (&ppc64->guest_VSR39, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 81:  VG_(transfer) (&ppc64->guest_VSR40, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 82:  VG_(transfer) (&ppc64->guest_VSR41, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 83:  VG_(transfer) (&ppc64->guest_VSR42, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 84:  VG_(transfer) (&ppc64->guest_VSR43, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 85:  VG_(transfer) (&ppc64->guest_VSR44, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 86:  VG_(transfer) (&ppc64->guest_VSR45, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 87:  VG_(transfer) (&ppc64->guest_VSR46, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 88:  VG_(transfer) (&ppc64->guest_VSR47, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 89:  VG_(transfer) (&ppc64->guest_VSR48, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 90:  VG_(transfer) (&ppc64->guest_VSR49, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 91:  VG_(transfer) (&ppc64->guest_VSR50, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 92:  VG_(transfer) (&ppc64->guest_VSR51, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 93:  VG_(transfer) (&ppc64->guest_VSR52, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 94:  VG_(transfer) (&ppc64->guest_VSR53, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 95:  VG_(transfer) (&ppc64->guest_VSR54, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 96:  VG_(transfer) (&ppc64->guest_VSR55, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 97:  VG_(transfer) (&ppc64->guest_VSR56, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 98:  VG_(transfer) (&ppc64->guest_VSR57, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 99:  VG_(transfer) (&ppc64->guest_VSR58, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 100: VG_(transfer) (&ppc64->guest_VSR59, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 101: VG_(transfer) (&ppc64->guest_VSR60, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 102: VG_(transfer) (&ppc64->guest_VSR61, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 103: VG_(transfer) (&ppc64->guest_VSR62, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 104: VG_(transfer) (&ppc64->guest_VSR63, buf, dir, size, mod); break;
Mark Wielaard 365520
-   case 105: VG_(transfer) (&ppc64->guest_VSCR, buf, dir, size, mod); break;
Mark Wielaard 365520
+
Mark Wielaard 365520
+   case 73:  VG_(transfer) (&ppc64->guest_VSR32,  buf, dir, size, mod);  break;
Mark Wielaard 365520
+   case 74:  VG_(transfer) (&ppc64->guest_VSR33,  buf, dir, size, mod);  break;
Mark Wielaard 365520
+   case 75:  VG_(transfer) (&ppc64->guest_VSR34,  buf, dir, size, mod);  break;
Mark Wielaard 365520
+   case 76:  VG_(transfer) (&ppc64->guest_VSR35,  buf, dir, size, mod);  break;
Mark Wielaard 365520
+   case 77:  VG_(transfer) (&ppc64->guest_VSR36,  buf, dir, size, mod);  break;
Mark Wielaard 365520
+   case 78:  VG_(transfer) (&ppc64->guest_VSR37,  buf, dir, size, mod);  break;
Mark Wielaard 365520
+   case 79:  VG_(transfer) (&ppc64->guest_VSR38,  buf, dir, size, mod);  break;
Mark Wielaard 365520
+   case 80:  VG_(transfer) (&ppc64->guest_VSR39,  buf, dir, size, mod);  break;
Mark Wielaard 365520
+   case 81:  VG_(transfer) (&ppc64->guest_VSR40,  buf, dir, size, mod);  break;
Mark Wielaard 365520
+   case 82:  VG_(transfer) (&ppc64->guest_VSR40,  buf, dir, size, mod);  break;
Mark Wielaard 365520
+   case 83:  VG_(transfer) (&ppc64->guest_VSR42,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 84:  VG_(transfer) (&ppc64->guest_VSR43,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 85:  VG_(transfer) (&ppc64->guest_VSR44,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 86:  VG_(transfer) (&ppc64->guest_VSR45,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 87:  VG_(transfer) (&ppc64->guest_VSR46,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 88:  VG_(transfer) (&ppc64->guest_VSR47,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 89:  VG_(transfer) (&ppc64->guest_VSR48,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 90:  VG_(transfer) (&ppc64->guest_VSR49,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 91:  VG_(transfer) (&ppc64->guest_VSR50,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 92:  VG_(transfer) (&ppc64->guest_VSR51,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 93:  VG_(transfer) (&ppc64->guest_VSR52,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 94:  VG_(transfer) (&ppc64->guest_VSR53,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 95:  VG_(transfer) (&ppc64->guest_VSR54,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 96:  VG_(transfer) (&ppc64->guest_VSR55,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 97:  VG_(transfer) (&ppc64->guest_VSR56,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 98:  VG_(transfer) (&ppc64->guest_VSR57,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 99:  VG_(transfer) (&ppc64->guest_VSR58,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 100: VG_(transfer) (&ppc64->guest_VSR59,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 101: VG_(transfer) (&ppc64->guest_VSR60,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 102: VG_(transfer) (&ppc64->guest_VSR61,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 103: VG_(transfer) (&ppc64->guest_VSR62,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 104: VG_(transfer) (&ppc64->guest_VSR63,  buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 105: VG_(transfer) (&ppc64->guest_VSCR, buf, dir, size, mod);   break;
Mark Wielaard 365520
    case 106: VG_(transfer) (&ppc64->guest_VRSAVE, buf, dir, size, mod); break;
Mark Wielaard 365520
+
Mark Wielaard 365520
+   /* Fetch the lower 64-bits of the VSR registers.  GDB will combine the
Mark Wielaard 365520
+    * lower 64-bits of the VSR with the upper 64-bits it got fetching the
Mark Wielaard 365520
+    * corresponding floating point register to display the full 128-bit
Mark Wielaard 365520
+    * VSR value.
Mark Wielaard 365520
+    */
Mark Wielaard 365520
+   case 107:  VG_(transfer) (&ppc64->guest_VSR0[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 108:  VG_(transfer) (&ppc64->guest_VSR1[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 109:  VG_(transfer) (&ppc64->guest_VSR2[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 110:  VG_(transfer) (&ppc64->guest_VSR3[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 111:  VG_(transfer) (&ppc64->guest_VSR4[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 112:  VG_(transfer) (&ppc64->guest_VSR5[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 113:  VG_(transfer) (&ppc64->guest_VSR6[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 114:  VG_(transfer) (&ppc64->guest_VSR7[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 115:  VG_(transfer) (&ppc64->guest_VSR8[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 116:  VG_(transfer) (&ppc64->guest_VSR9[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 117:  VG_(transfer) (&ppc64->guest_VSR10[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 118:  VG_(transfer) (&ppc64->guest_VSR11[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 119:  VG_(transfer) (&ppc64->guest_VSR12[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 120:  VG_(transfer) (&ppc64->guest_VSR13[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 121:  VG_(transfer) (&ppc64->guest_VSR14[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 122:  VG_(transfer) (&ppc64->guest_VSR15[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 123:  VG_(transfer) (&ppc64->guest_VSR16[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 124:  VG_(transfer) (&ppc64->guest_VSR17[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 125:  VG_(transfer) (&ppc64->guest_VSR18[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 126:  VG_(transfer) (&ppc64->guest_VSR19[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 127:  VG_(transfer) (&ppc64->guest_VSR20[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 128:  VG_(transfer) (&ppc64->guest_VSR21[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 129:  VG_(transfer) (&ppc64->guest_VSR22[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 130:  VG_(transfer) (&ppc64->guest_VSR23[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 131:  VG_(transfer) (&ppc64->guest_VSR24[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 132:  VG_(transfer) (&ppc64->guest_VSR25[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 133:  VG_(transfer) (&ppc64->guest_VSR26[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 134:  VG_(transfer) (&ppc64->guest_VSR27[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 135:  VG_(transfer) (&ppc64->guest_VSR28[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 136:  VG_(transfer) (&ppc64->guest_VSR29[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 137:  VG_(transfer) (&ppc64->guest_VSR30[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
+   case 138:  VG_(transfer) (&ppc64->guest_VSR31[low_offset], buf, dir, size, mod); break;
Mark Wielaard 365520
    default: vg_assert(0);
Mark Wielaard 365520
    }
Mark Wielaard 365520
 }
Mark Wielaard 365520
@@ -321,6 +471,14 @@ void transfer_register (ThreadId tid, int abs_regno, void * buf,
Mark Wielaard 365520
 static
Mark Wielaard 365520
 const char* target_xml (Bool shadow_mode)
Mark Wielaard 365520
 {
Mark Wielaard 365520
+   /* NOTE, the current powerpc-altivec64l*.xml files includes the vsx
Mark Wielaard 365520
+    * registers.  Power 6 and earlier power processors do not support the
Mark Wielaard 365520
+    * vsx registers.  GDB has a bug in that it is only checking for ptrace
Mark Wielaard 365520
+    * support rather then checking the actual HW feature.  Hence GDB on
Mark Wielaard 365520
+    * power 6 prints vsx registers that do not exist.  Valgrind GDB support
Mark Wielaard 365520
+    * also has to include the vsx register definitions to be consistent with
Mark Wielaard 365520
+    * GDB.
Mark Wielaard 365520
+    */
Mark Wielaard 365520
    if (shadow_mode) {
Mark Wielaard 365520
       return "powerpc-altivec64l-valgrind.xml";
Mark Wielaard 365520
    } else {
Mark Wielaard 365520
Mark Wielaard 365520
commit 323a91bfd7dd10d52c77ff31ae6d6b8d0bb37f32
Mark Wielaard 365520
Author: carll <carll@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Mark Wielaard 365520
Date:   Fri Apr 22 15:03:46 2016 +0000
Mark Wielaard 365520
Mark Wielaard 365520
    PPC64, Valgrind with GDB does not display 64-bit and 128-bit registers
Mark Wielaard 365520
    correctly
Mark Wielaard 365520
    
Mark Wielaard 365520
    Forgot to add the new files to the previous commit 15864.
Mark Wielaard 365520
    
Mark Wielaard 365520
    coregrind/m_gdbserver/power64-core2-valgrind-s1.xml
Mark Wielaard 365520
    coregrind/m_gdbserver/power64-core2-valgrind-s2.xml
Mark Wielaard 365520
    coregrind/m_gdbserver/power-vsx-valgrind-s1.xml
Mark Wielaard 365520
    coregrind/m_gdbserver/power-vsx-valgrind-s2.xml
Mark Wielaard 365520
    coregrind/m_gdbserver/power-vsx.xml
Mark Wielaard 365520
    
Mark Wielaard 365520
    Bugzilla 360008 was opened for this issue.
Mark Wielaard 365520
    
Mark Wielaard 365520
    git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15866 a5019735-40e9-0310-863c-91ae7b9d1cf9
Mark Wielaard 365520
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/power-vsx-valgrind-s1.xml b/coregrind/m_gdbserver/power-vsx-valgrind-s1.xml
Mark Wielaard 365520
new file mode 100644
Mark Wielaard 365520
index 0000000..24730ff
Mark Wielaard 365520
--- /dev/null
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/power-vsx-valgrind-s1.xml
Mark Wielaard 365520
@@ -0,0 +1,44 @@
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+     Copying and distribution of this file, with or without modification,
Mark Wielaard 365520
+     are permitted in any medium without royalty provided the copyright
Mark Wielaard 365520
+     notice and this notice are preserved.  -->
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+     registers.  -->
Mark Wielaard 365520
+
Mark Wielaard 365520
+<feature name="org.gnu.gdb.power.vsx">
Mark Wielaard 365520
+  <reg name="vs0hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs1hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs2hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs3hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs4hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs5hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs6hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs7hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs8hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs9hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs10hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs11hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs12hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs13hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs14hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs15hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs16hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs17hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs18hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs19hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs20hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs21hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs22hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs23hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs24hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs25hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs26hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs27hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs28hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs29hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs30hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs31hs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+</feature>
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/power-vsx-valgrind-s2.xml b/coregrind/m_gdbserver/power-vsx-valgrind-s2.xml
Mark Wielaard 365520
new file mode 100644
Mark Wielaard 365520
index 0000000..8854e8f
Mark Wielaard 365520
--- /dev/null
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/power-vsx-valgrind-s2.xml
Mark Wielaard 365520
@@ -0,0 +1,44 @@
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+     Copying and distribution of this file, with or without modification,
Mark Wielaard 365520
+     are permitted in any medium without royalty provided the copyright
Mark Wielaard 365520
+     notice and this notice are preserved.  -->
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+     registers.  -->
Mark Wielaard 365520
+
Mark Wielaard 365520
+<feature name="org.gnu.gdb.power.vsx">
Mark Wielaard 365520
+  <reg name="vs0hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs1hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs2hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs3hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs4hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs5hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs6hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs7hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs8hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs9hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs10hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs11hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs12hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs13hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs14hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs15hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs16hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs17hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs18hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs19hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs20hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs21hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs22hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs23hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs24hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs25hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs26hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs27hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs28hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs29hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs30hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs31hs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+</feature>
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/power-vsx.xml b/coregrind/m_gdbserver/power-vsx.xml
Mark Wielaard 365520
new file mode 100644
Mark Wielaard 365520
index 0000000..411e35c
Mark Wielaard 365520
--- /dev/null
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/power-vsx.xml
Mark Wielaard 365520
@@ -0,0 +1,44 @@
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+     Copying and distribution of this file, with or without modification,
Mark Wielaard 365520
+     are permitted in any medium without royalty provided the copyright
Mark Wielaard 365520
+     notice and this notice are preserved.  -->
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+     registers.  -->
Mark Wielaard 365520
+
Mark Wielaard 365520
+<feature name="org.gnu.gdb.power.vsx">
Mark Wielaard 365520
+  <reg name="vs0h" bitsize="64" type="uint64" regnum="107"/>
Mark Wielaard 365520
+  <reg name="vs1h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs2h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs3h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs4h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs5h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs6h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs7h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs8h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs9h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs10h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs11h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs12h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs13h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs14h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs15h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs16h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs17h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs18h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs19h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs20h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs21h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs22h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs23h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs24h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs25h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs26h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs27h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs28h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs29h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs30h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="vs31h" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+</feature>
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/power64-core2-valgrind-s1.xml b/coregrind/m_gdbserver/power64-core2-valgrind-s1.xml
Mark Wielaard 365520
new file mode 100644
Mark Wielaard 365520
index 0000000..1012a2d
Mark Wielaard 365520
--- /dev/null
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/power64-core2-valgrind-s1.xml
Mark Wielaard 365520
@@ -0,0 +1,16 @@
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+     Copying and distribution of this file, with or without modification,
Mark Wielaard 365520
+     are permitted in any medium without royalty provided the copyright
Mark Wielaard 365520
+     notice and this notice are preserved.  -->
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+<feature name="org.gnu.gdb.power.core2-valgrind-s1">
Mark Wielaard 365520
+  <reg name="pcs1" bitsize="64" type="code_ptr"/>
Mark Wielaard 365520
+  <reg name="msrs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="crs1" bitsize="32" type="uint32"/>
Mark Wielaard 365520
+  <reg name="lrs1" bitsize="64" type="code_ptr"/>
Mark Wielaard 365520
+  <reg name="ctrs1" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="xers1" bitsize="32" type="uint32"/>
Mark Wielaard 365520
+</feature>
Mark Wielaard 365520
diff --git a/coregrind/m_gdbserver/power64-core2-valgrind-s2.xml b/coregrind/m_gdbserver/power64-core2-valgrind-s2.xml
Mark Wielaard 365520
new file mode 100644
Mark Wielaard 365520
index 0000000..fa50bd4
Mark Wielaard 365520
--- /dev/null
Mark Wielaard 365520
+++ b/coregrind/m_gdbserver/power64-core2-valgrind-s2.xml
Mark Wielaard 365520
@@ -0,0 +1,16 @@
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+     Copying and distribution of this file, with or without modification,
Mark Wielaard 365520
+     are permitted in any medium without royalty provided the copyright
Mark Wielaard 365520
+     notice and this notice are preserved.  -->
Mark Wielaard 365520
+
Mark Wielaard 365520
+
Mark Wielaard 365520
+<feature name="org.gnu.gdb.power.core2-valgrind-s2">
Mark Wielaard 365520
+  <reg name="pcs2" bitsize="64" type="code_ptr"/>
Mark Wielaard 365520
+  <reg name="msrs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="crs2" bitsize="32" type="uint32"/>
Mark Wielaard 365520
+  <reg name="lrs2" bitsize="64" type="code_ptr"/>
Mark Wielaard 365520
+  <reg name="ctrs2" bitsize="64" type="uint64"/>
Mark Wielaard 365520
+  <reg name="xers2" bitsize="32" type="uint32"/>
Mark Wielaard 365520
+</feature>
Mark Wielaard 365520
Only in valgrind-3.11.0: autom4te.cache
Mark Wielaard 365520
diff -ur valgrind-3.11.0.orig/coregrind/Makefile.in valgrind-3.11.0/coregrind/Makefile.in
Mark Wielaard 365520
--- valgrind-3.11.0.orig/coregrind/Makefile.in	2016-04-29 15:07:46.688655051 +0200
Mark Wielaard 365520
+++ valgrind-3.11.0/coregrind/Makefile.in	2016-04-29 15:11:24.219880810 +0200
Mark Wielaard 365520
@@ -1746,12 +1746,17 @@
Mark Wielaard 365520
 	m_gdbserver/power64-core-valgrind-s1.xml \
Mark Wielaard 365520
 	m_gdbserver/power64-core-valgrind-s2.xml \
Mark Wielaard 365520
 	m_gdbserver/power64-core.xml \
Mark Wielaard 365520
+	m_gdbserver/power64-core2-valgrind-s1.xml \
Mark Wielaard 365520
+	m_gdbserver/power64-core2-valgrind-s2.xml \
Mark Wielaard 365520
 	m_gdbserver/power64-linux-valgrind-s1.xml \
Mark Wielaard 365520
 	m_gdbserver/power64-linux-valgrind-s2.xml \
Mark Wielaard 365520
 	m_gdbserver/power64-linux.xml \
Mark Wielaard 365520
 	m_gdbserver/power-altivec-valgrind-s1.xml \
Mark Wielaard 365520
 	m_gdbserver/power-altivec-valgrind-s2.xml \
Mark Wielaard 365520
 	m_gdbserver/power-altivec.xml \
Mark Wielaard 365520
+	m_gdbserver/power-vsx-valgrind-s1.xml \
Mark Wielaard 365520
+	m_gdbserver/power-vsx-valgrind-s2.xml \
Mark Wielaard 365520
+	m_gdbserver/power-vsx.xml \
Mark Wielaard 365520
 	m_gdbserver/power-core-valgrind-s1.xml \
Mark Wielaard 365520
 	m_gdbserver/power-core-valgrind-s2.xml \
Mark Wielaard 365520
 	m_gdbserver/power-core.xml \