summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2001-02-17 09:01:14 +0000
committerMark Kettenis <kettenis@gnu.org>2001-02-17 09:01:14 +0000
commitb5021f644058f841178397ea07ef55ceaab9b7d7 (patch)
treeacb800d1c618409c4cf4028d444adf466fa134a5
parentb95f8ebb90a20b536b826500bf8b17b0bd7bda51 (diff)
downloadgdb-b5021f644058f841178397ea07ef55ceaab9b7d7.tar.gz
* i387-nat.c: Include "i387-nat.h". Use regnum instead of regno
consistently for parameter names. Fix comments accordingly. (i387_supply_register): New function. (i387_supply_fsave): Implement using i387_supply_register. * i387-nat.h: Use regnum instead of regno consistently for parameter names. Fix comments accordingly. (i387_supply_register): New prototype.
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/i387-nat.c74
-rw-r--r--gdb/i387-nat.h20
3 files changed, 65 insertions, 39 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f6a17d7246c..3c898b1b65c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+2001-02-17 Mark Kettenis <kettenis@gnu.org>
+
+ * i387-nat.c: Include "i387-nat.h". Use regnum instead of regno
+ consistently for parameter names. Fix comments accordingly.
+ (i387_supply_register): New function.
+ (i387_supply_fsave): Implement using i387_supply_register.
+ * i387-nat.h: Use regnum instead of regno consistently for
+ parameter names. Fix comments accordingly.
+ (i387_supply_register): New prototype.
+
2001-02-16 Michael Snyder <msnyder@mvstp600e.cygnus.com>
* remote.c (build_remote_gdbarch_data): Use new TARGET_ADDR_BIT
diff --git a/gdb/i387-nat.c b/gdb/i387-nat.c
index 76986080e12..49357c47096 100644
--- a/gdb/i387-nat.c
+++ b/gdb/i387-nat.c
@@ -1,5 +1,5 @@
/* Native-dependent code for the i387.
- Copyright 2000 Free Software Foundation, Inc.
+ Copyright 2000, 2001 Free Software Foundation, Inc.
This file is part of GDB.
@@ -22,15 +22,17 @@
#include "inferior.h"
#include "value.h"
+#include "i387-nat.h"
+
/* FIXME: kettenis/2000-05-21: Right now more than a few i386 targets
define their own routines to manage the floating-point registers in
GDB's register array. Most (if not all) of these targets use the
format used by the "fsave" instruction in their communication with
the OS. They should all be converted to use the routines below. */
-/* At fsave_offset[REGNO] you'll find the offset to the location in
+/* At fsave_offset[REGNUM] you'll find the offset to the location in
the data structure used by the "fsave" instruction where GDB
- register REGNO is stored. */
+ register REGNUM is stored. */
static int fsave_offset[] =
{
@@ -55,6 +57,32 @@ static int fsave_offset[] =
#define FSAVE_ADDR(fsave, regnum) (fsave + fsave_offset[regnum - FP0_REGNUM])
+/* Fill register REGNUM in GDB's register array with the appropriate
+ value from *FSAVE. This function masks off any of the reserved
+ bits in *FSAVE. */
+
+void
+i387_supply_register (int regnum, char *fsave)
+{
+ /* Most of the FPU control registers occupy only 16 bits in
+ the fsave area. Give those a special treatment. */
+ if (regnum >= FIRST_FPU_CTRL_REGNUM
+ && regnum != FCOFF_REGNUM && regnum != FDOFF_REGNUM)
+ {
+ unsigned int val = *(unsigned short *) (FSAVE_ADDR (fsave, regnum));
+
+ if (regnum == FOP_REGNUM)
+ {
+ val &= ((1 << 11) - 1);
+ supply_register (regnum, (char *) &val);
+ }
+ else
+ supply_register (regnum, (char *) &val);
+ }
+ else
+ supply_register (regnum, FSAVE_ADDR (fsave, regnum));
+}
+
/* Fill GDB's register array with the floating-point register values
in *FSAVE. This function masks off any of the reserved
bits in *FSAVE. */
@@ -65,39 +93,21 @@ i387_supply_fsave (char *fsave)
int i;
for (i = FP0_REGNUM; i <= LAST_FPU_CTRL_REGNUM; i++)
- {
- /* Most of the FPU control registers occupy only 16 bits in
- the fsave area. Give those a special treatment. */
- if (i >= FIRST_FPU_CTRL_REGNUM
- && i != FCOFF_REGNUM && i != FDOFF_REGNUM)
- {
- unsigned int val = *(unsigned short *) (FSAVE_ADDR (fsave, i));
-
- if (i == FOP_REGNUM)
- {
- val &= ((1 << 11) - 1);
- supply_register (i, (char *) &val);
- }
- else
- supply_register (i, (char *) &val);
- }
- else
- supply_register (i, FSAVE_ADDR (fsave, i));
- }
+ i387_supply_register (i, fsave);
}
-/* Fill register REGNO (if it is a floating-point register) in *FSAVE
- with the value in GDB's register array. If REGNO is -1, do this
+/* Fill register REGNUM (if it is a floating-point register) in *FSAVE
+ with the value in GDB's register array. If REGNUM is -1, do this
for all registers. This function doesn't touch any of the reserved
bits in *FSAVE. */
void
-i387_fill_fsave (char *fsave, int regno)
+i387_fill_fsave (char *fsave, int regnum)
{
int i;
for (i = FP0_REGNUM; i <= LAST_FPU_CTRL_REGNUM; i++)
- if (regno == -1 || regno == i)
+ if (regnum == -1 || regnum == i)
{
/* Most of the FPU control registers occupy only 16 bits in
the fsave area. Give those a special treatment. */
@@ -125,9 +135,9 @@ i387_fill_fsave (char *fsave, int regno)
}
-/* At fxsave_offset[REGNO] you'll find the offset to the location in
+/* At fxsave_offset[REGNUM] you'll find the offset to the location in
the data structure used by the "fxsave" instruction where GDB
- register REGNO is stored. */
+ register REGNUM is stored. */
static int fxsave_offset[] =
{
@@ -223,18 +233,18 @@ i387_supply_fxsave (char *fxsave)
}
}
-/* Fill register REGNO (if it is a floating-point or SSE register) in
- *FXSAVE with the value in GDB's register array. If REGNO is -1, do
+/* 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
this for all registers. This function doesn't touch any of the
reserved bits in *FXSAVE. */
void
-i387_fill_fxsave (char *fxsave, int regno)
+i387_fill_fxsave (char *fxsave, int regnum)
{
int i;
for (i = FP0_REGNUM; i <= MXCSR_REGNUM; i++)
- if (regno == -1 || regno == i)
+ if (regnum == -1 || regnum == i)
{
/* Most of the FPU control registers occupy only 16 bits in
the fxsave area. Give those a special treatment. */
diff --git a/gdb/i387-nat.h b/gdb/i387-nat.h
index 85efc8ecd86..ca2e7c6865d 100644
--- a/gdb/i387-nat.h
+++ b/gdb/i387-nat.h
@@ -1,5 +1,5 @@
/* Native-dependent code for the i387.
- Copyright 2000 Free Software Foundation, Inc.
+ Copyright 2000, 2001 Free Software Foundation, Inc.
This file is part of GDB.
@@ -21,18 +21,24 @@
#ifndef I387_NAT_H
#define I387_NAT_H
+/* Fill register REGNO in GDB's register array with the appropriate
+ value from *FSAVE. This function masks off any of the reserved
+ bits in *FSAVE. */
+
+extern void i387_supply_register (int regnum, char *fsave);
+
/* Fill GDB's register array with the floating-point register values
in *FSAVE. This function masks off any of the reserved
bits in *FSAVE. */
extern void i387_supply_fsave (char *fsave);
-/* Fill register REGNO (if it is a floating-point register) in *FSAVE
- with the value in GDB's register array. If REGNO is -1, do this
+/* Fill register REGNUM (if it is a floating-point register) in *FSAVE
+ with the value in GDB's register array. If REGNUM is -1, do this
for all registers. This function doesn't touch any of the reserved
bits in *FSAVE. */
-extern void i387_fill_fsave (char *fsave, int regno);
+extern void i387_fill_fsave (char *fsave, int regnum);
/* Fill GDB's register array with the floating-point and SSE register
values in *FXSAVE. This function masks off any of the reserved
@@ -40,11 +46,11 @@ extern void i387_fill_fsave (char *fsave, int regno);
extern void i387_supply_fxsave (char *fxsave);
-/* Fill register REGNO (if it is a floating-point or SSE register) in
- *FXSAVE with the value in GDB's register array. If REGNO is -1, do
+/* 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
this for all registers. This function doesn't touch any of the
reserved bits in *FXSAVE. */
-extern void i387_fill_fxsave (char *fxsave, int regno);
+extern void i387_fill_fxsave (char *fxsave, int regnum);
#endif /* i387-nat.h */