* i387-tdep.c (i387_supply_fsave): Provide summy values for the
authorMark Kettenis <kettenis@gnu.org>
Wed, 4 Aug 2004 20:57:29 +0000 (20:57 +0000)
committerMark Kettenis <kettenis@gnu.org>
Wed, 4 Aug 2004 20:57:29 +0000 (20:57 +0000)
SSE registers.

gdb/ChangeLog
gdb/i387-tdep.c

index 35d8fb9486e9800b07df87db8d434b805bf1704e..d1e53c873ae0a205987c4b743e19ec6aed10b3cc 100644 (file)
@@ -1,5 +1,8 @@
 2004-08-04  Mark Kettenis  <kettenis@gnu.org>
 
+       * i387-tdep.c (i387_supply_fsave): Provide summy values for the
+       SSE registers.
+
        * Makefile.in: Remove embedded page breaks.
 
 2004-08-04  Jim Blandy  <jimb@redhat.com>
index 0e60a13968b242396c81a885d8581ec7809f6ca8..003818c76900cb8ac8f01348eb9d0dd9fbd47318 100644 (file)
@@ -390,9 +390,11 @@ i387_supply_fsave (struct regcache *regcache, int regnum, const void *fsave)
 
   gdb_assert (tdep->st0_regnum >= I386_ST0_REGNUM);
 
-  /* Define I387_ST0_REGNUM such that we use the proper definitions
-     for REGCACHE's architecture.  */
+  /* Define I387_ST0_REGNUM and I387_NUM_XMM_REGS such that we use the
+     proper definitions for REGCACHE's architecture.  */
+
 #define I387_ST0_REGNUM tdep->st0_regnum
+#define I387_NUM_XMM_REGS tdep->num_xmm_regs
 
   for (i = I387_ST0_REGNUM; i < I387_XMM0_REGNUM; i++)
     if (regnum == -1 || regnum == i)
@@ -419,7 +421,21 @@ i387_supply_fsave (struct regcache *regcache, int regnum, const void *fsave)
        else
          regcache_raw_supply (regcache, i, FSAVE_ADDR (regs, i));
       }
+
+  /* Provide dummy values for the SSE registers.  */
+  for (i = I387_XMM0_REGNUM; i < I387_MXCSR_REGNUM; i++)
+    if (regnum == -1 || regnum == i)
+      regcache_raw_supply (regcache, i, NULL);
+  if (regnum == -1 || regnum == I387_MXCSR_REGNUM)
+    {
+      char buf[4];
+
+      store_unsigned_integer (buf, 4, 0x1f80);
+      regcache_raw_supply (regcache, I387_MXCSR_REGNUM, buf);
+    }
+
 #undef I387_ST0_REGNUM
+#undef I387_NUM_XMM_REGS
 }
 
 /* Fill register REGNUM (if it is a floating-point register) in *FSAVE