aboutsummaryrefslogtreecommitdiff
path: root/gdb/amd64-tdep.c
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2004-05-30 16:56:08 +0000
committerMark Kettenis <kettenis@gnu.org>2004-05-30 16:56:08 +0000
commit593adc23491c6e80fb4a54c6ee3489e5dac5c55c (patch)
tree57b303d5b39c45cd9de2566d49a600191552e7ee /gdb/amd64-tdep.c
parent8d1b517b9789929e4505a7e8e16cb41b368203c0 (diff)
downloadfsf-binutils-gdb-593adc23491c6e80fb4a54c6ee3489e5dac5c55c.zip
fsf-binutils-gdb-593adc23491c6e80fb4a54c6ee3489e5dac5c55c.tar.gz
fsf-binutils-gdb-593adc23491c6e80fb4a54c6ee3489e5dac5c55c.tar.bz2
* amd64-tdep.c (amd64_supply_fpregset): Adjust comment.
(amd64_collect_fpregset): New function. (amd64_regset_from_core_section): Use amd64_collect_fpregset.
Diffstat (limited to 'gdb/amd64-tdep.c')
-rw-r--r--gdb/amd64-tdep.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
index 2ce8efc..4a64bf3 100644
--- a/gdb/amd64-tdep.c
+++ b/gdb/amd64-tdep.c
@@ -1048,9 +1048,9 @@ amd64_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
}
-/* Supply register REGNUM from the floating-point register set REGSET
- to register cache REGCACHE. If REGNUM is -1, do this for all
- registers in REGSET. */
+/* Supply register REGNUM from the buffer specified by FPREGS and LEN
+ in the floating-point register set REGSET to register cache
+ REGCACHE. If REGNUM is -1, do this for all registers in REGSET. */
static void
amd64_supply_fpregset (const struct regset *regset, struct regcache *regcache,
@@ -1062,6 +1062,22 @@ amd64_supply_fpregset (const struct regset *regset, struct regcache *regcache,
amd64_supply_fxsave (regcache, regnum, fpregs);
}
+/* Collect register REGNUM from the register cache REGCACHE and store
+ it in the buffer specified by FPREGS and LEN as described by the
+ floating-point register set REGSET. If REGNUM is -1, do this for
+ all registers in REGSET. */
+
+static void
+amd64_collect_fpregset (const struct regset *regset,
+ const struct regcache *regcache,
+ int regnum, void *fpregs, size_t len)
+{
+ const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
+
+ gdb_assert (len == tdep->sizeof_fpregset);
+ amd64_collect_fxsave (regcache, regnum, fpregs);
+}
+
/* Return the appropriate register set for the core section identified
by SECT_NAME and SECT_SIZE. */
@@ -1074,7 +1090,8 @@ amd64_regset_from_core_section (struct gdbarch *gdbarch,
if (strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset)
{
if (tdep->fpregset == NULL)
- tdep->fpregset = regset_alloc (gdbarch, amd64_supply_fpregset, NULL);
+ tdep->fpregset = regset_alloc (gdbarch, amd64_supply_fpregset,
+ amd64_collect_fpregset);
return tdep->fpregset;
}