* amd64-tdep.h: (amd64_collect_fxsave): New prototype.
authorMark Kettenis <kettenis@gnu.org>
Sat, 28 Feb 2004 20:48:57 +0000 (20:48 +0000)
committerMark Kettenis <kettenis@gnu.org>
Sat, 28 Feb 2004 20:48:57 +0000 (20:48 +0000)
* amd64-tdep.c (amd64_collect_fxsave): New function.
(amd64_fill_fxsave): Simply call amd64_collect_fxsave.

gdb/ChangeLog
gdb/amd64-tdep.c
gdb/amd64-tdep.h

index e999d4e2c8575f6b16cb9e0c5d9924165708a8e4..e7410214e2dac24ebc53c0d23d04957e1f7645db 100644 (file)
@@ -1,5 +1,9 @@
 2004-02-28  Mark Kettenis  <kettenis@gnu.org>
 
+       * amd64-tdep.h: (amd64_collect_fxsave): New prototype.
+       * amd64-tdep.c (amd64_collect_fxsave): New function.
+       (amd64_fill_fxsave): Simply call amd64_collect_fxsave.
+
        * i387-tdep.h: Update copyright year.
        (i387_collect_fxsave): New prototype.
        * i387-tdep.c: Update copyright year.
index 0e446682fe824448930e87efd6a2e91ac28e373e..e0b2ca046f598610a3f78008ba88bbeb9e54c483 100644 (file)
@@ -1168,6 +1168,25 @@ amd64_supply_fxsave (struct regcache *regcache, int regnum,
     }
 }
 
+/* Fill register REGNUM (if it is a floating-point or SSE register) in
+   *FXSAVE with the value from REGCACHE.  If REGNUM is -1, do this for
+   all registers.  This function doesn't touch any of the reserved
+   bits in *FXSAVE.  */
+
+void
+amd64_collect_fxsave (const struct regcache *regcache, int regnum,
+                     void *fxsave)
+{
+  char *regs = fxsave;
+
+  i387_collect_fxsave (regcache, regnum, fxsave);
+
+  if (regnum == -1 || regnum == I387_FISEG_REGNUM)
+    regcache_raw_collect (regcache, I387_FISEG_REGNUM, regs + 12);
+  if (regnum == -1 || regnum == I387_FOSEG_REGNUM)
+    regcache_raw_collect (regcache, I387_FOSEG_REGNUM, regs + 20);
+}
+
 /* Fill register REGNUM (if it is a floating-point or SSE register) in
    *FXSAVE with the value in GDB's register cache.  If REGNUM is -1, do
    this for all registers.  This function doesn't touch any of the
@@ -1176,10 +1195,5 @@ amd64_supply_fxsave (struct regcache *regcache, int regnum,
 void
 amd64_fill_fxsave (char *fxsave, int regnum)
 {
-  i387_fill_fxsave (fxsave, regnum);
-
-  if (regnum == -1 || regnum == I387_FISEG_REGNUM)
-    regcache_collect (I387_FISEG_REGNUM, fxsave + 12);
-  if (regnum == -1 || regnum == I387_FOSEG_REGNUM)
-    regcache_collect (I387_FOSEG_REGNUM, fxsave + 20);
+  amd64_collect_fxsave (current_regcache, regnum, fxsave);
 }
index aff0c6a03895ffe174e92c2bf05f1cac1cdee616..042618b3e09b36a460175c898495b036823e755e 100644 (file)
@@ -63,6 +63,14 @@ extern void amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch);
 extern void amd64_supply_fxsave (struct regcache *regcache, int regnum,
                                 const void *fxsave);
 
+/* Fill register REGNUM (if it is a floating-point or SSE register) in
+   *FXSAVE with the value from REGCACHE.  If REGNUM is -1, do this for
+   all registers.  This function doesn't touch any of the reserved
+   bits in *FXSAVE.  */
+
+extern void amd64_collect_fxsave (const struct regcache *regcache, int regnum,
+                                 void *fxsave);
+
 /* Fill register REGNUM (if it is a floating-point or SSE register) in
    *FXSAVE with the value in GDB's register cache.  If REGNUM is -1, do
    this for all registers.  This function doesn't touch any of the