aboutsummaryrefslogtreecommitdiff
path: root/gdb/x86-64-tdep.c
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2003-08-23 13:58:18 +0000
committerMark Kettenis <kettenis@gnu.org>2003-08-23 13:58:18 +0000
commit0485f6ad303a1c0cbc03d83af4fa380987c0fc38 (patch)
tree65e98dbd548129b5dd80b6fc586ce556b337bfa1 /gdb/x86-64-tdep.c
parentc77161335bc01d9717915314b1249bc7d1986084 (diff)
downloadgdb-0485f6ad303a1c0cbc03d83af4fa380987c0fc38.zip
gdb-0485f6ad303a1c0cbc03d83af4fa380987c0fc38.tar.gz
gdb-0485f6ad303a1c0cbc03d83af4fa380987c0fc38.tar.bz2
* x86-64-tdep.c (x86_64_supply_fxsave): Add `regnum' argument.
Update comments. * x86-64-tdep.h (x86_64_supply_fxsave): Adjust prototype. Update comments. * x86-64-linux-tdep.c (fetch_core_registers): Adjust call to x86_64_supply_fxsave. * x86-64-linux-nat.c (supply_fpregset): Adjust call to x86_64_supply_fxsave. * amd64fbsd-nat.c (supply_fpregset): Adjust call to x86_64_supply_fxsave.
Diffstat (limited to 'gdb/x86-64-tdep.c')
-rw-r--r--gdb/x86-64-tdep.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/gdb/x86-64-tdep.c b/gdb/x86-64-tdep.c
index 86cb2fc..e855503 100644
--- a/gdb/x86-64-tdep.c
+++ b/gdb/x86-64-tdep.c
@@ -1288,24 +1288,27 @@ x86_64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
bits of these pointers (instead of just the 16-bits of the segment
selector). */
-/* Fill GDB's register array with the floating-point and SSE register
- values in *FXSAVE. This function masks off any of the reserved
- bits in *FXSAVE. */
+/* Fill register REGNUM in GDB's register cache with the appropriate
+ floating-point or SSE register value from *FXSAVE. If REGNUM is
+ -1, do this for all registers. This function masks off any of the
+ reserved bits in *FXSAVE. */
void
-x86_64_supply_fxsave (char *fxsave)
+x86_64_supply_fxsave (const char *fxsave, int regnum)
{
- i387_supply_fxsave (fxsave, -1);
+ i387_supply_fxsave (fxsave, regnum);
if (fxsave)
{
- supply_register (I387_FISEG_REGNUM, fxsave + 12);
+ if (regnum == -1 || regnum == I387_FISEG_REGNUM)
+ supply_register (I387_FISEG_REGNUM, fxsave + 12);
+ if (regnum == -1 || regnum == I387_FOSEG_REGNUM)
supply_register (I387_FOSEG_REGNUM, fxsave + 20);
}
}
/* Fill register REGNUM (if it is a floating-point or SSE register) in
- *FXSAVE with the value in GDB's register array. If REGNUM is -1, do
+ *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
reserved bits in *FXSAVE. */