2007-10-22 Markus Deuling <deuling@de.ibm.com>
[deliverable/binutils-gdb.git] / gdb / i387-tdep.c
index 0d3c98805a92222710183e9cef7c4cb290bf704a..d54268e8094d49258c6ca1dc8dd5d7d3048a91fb 100644 (file)
@@ -1,13 +1,13 @@
 /* Intel 387 floating point stuff.
 
-   Copyright 1988, 1989, 1991, 1992, 1993, 1994, 1998, 1999, 2000,
-   2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1988, 1989, 1991, 1992, 1993, 1994, 1998, 1999, 2000, 2001,
+   2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -16,9 +16,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
 #include "doublest.h"
@@ -39,7 +37,7 @@
 /* Print the floating point number specified by RAW.  */
 
 static void
-print_i387_value (char *raw, struct ui_file *file)
+print_i387_value (const gdb_byte *raw, struct ui_file *file)
 {
   DOUBLEST value;
 
@@ -63,7 +61,7 @@ print_i387_value (char *raw, struct ui_file *file)
 /* Print the classification for the register contents RAW.  */
 
 static void
-print_i387_ext (unsigned char *raw, struct ui_file *file)
+print_i387_ext (const gdb_byte *raw, struct ui_file *file)
 {
   int sign;
   int integer;
@@ -203,7 +201,7 @@ i387_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
                       struct frame_info *frame, const char *args)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (frame));
-  char buf[4];
+  gdb_byte buf[4];
   ULONGEST fctrl;
   ULONGEST fstat;
   ULONGEST ftag;
@@ -234,7 +232,7 @@ i387_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
 
   for (fpreg = 7; fpreg >= 0; fpreg--)
     {
-      unsigned char raw[I386_MAX_REGISTER_SIZE];
+      gdb_byte raw[I386_MAX_REGISTER_SIZE];
       int tag = (ftag >> (fpreg * 2)) & 3;
       int i;
 
@@ -292,9 +290,9 @@ i387_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
 
 void
 i387_register_to_value (struct frame_info *frame, int regnum,
-                       struct type *type, void *to)
+                       struct type *type, gdb_byte *to)
 {
-  char from[I386_MAX_REGISTER_SIZE];
+  gdb_byte from[I386_MAX_REGISTER_SIZE];
 
   gdb_assert (i386_fp_regnum_p (regnum));
 
@@ -317,9 +315,9 @@ i387_register_to_value (struct frame_info *frame, int regnum,
 
 void
 i387_value_to_register (struct frame_info *frame, int regnum,
-                       struct type *type, const void *from)
+                       struct type *type, const gdb_byte *from)
 {
-  char to[I386_MAX_REGISTER_SIZE];
+  gdb_byte to[I386_MAX_REGISTER_SIZE];
 
   gdb_assert (i386_fp_regnum_p (regnum));
 
@@ -376,7 +374,7 @@ void
 i387_supply_fsave (struct regcache *regcache, int regnum, const void *fsave)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache));
-  const char *regs = fsave;
+  const gdb_byte *regs = fsave;
   int i;
 
   gdb_assert (tdep->st0_regnum >= I386_ST0_REGNUM);
@@ -401,7 +399,7 @@ i387_supply_fsave (struct regcache *regcache, int regnum, const void *fsave)
        if (i >= I387_FCTRL_REGNUM
            && i != I387_FIOFF_REGNUM && i != I387_FOOFF_REGNUM)
          {
-           unsigned char val[4];
+           gdb_byte val[4];
 
            memcpy (val, FSAVE_ADDR (regs, i), 2);
            val[2] = val[3] = 0;
@@ -419,7 +417,7 @@ i387_supply_fsave (struct regcache *regcache, int regnum, const void *fsave)
       regcache_raw_supply (regcache, i, NULL);
   if (regnum == -1 || regnum == I387_MXCSR_REGNUM)
     {
-      char buf[4];
+      gdb_byte buf[4];
 
       store_unsigned_integer (buf, 4, 0x1f80);
       regcache_raw_supply (regcache, I387_MXCSR_REGNUM, buf);
@@ -438,7 +436,7 @@ void
 i387_collect_fsave (const struct regcache *regcache, int regnum, void *fsave)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
-  char *regs = fsave;
+  gdb_byte *regs = fsave;
   int i;
 
   gdb_assert (tdep->st0_regnum >= I386_ST0_REGNUM);
@@ -455,7 +453,7 @@ i387_collect_fsave (const struct regcache *regcache, int regnum, void *fsave)
        if (i >= I387_FCTRL_REGNUM
            && i != I387_FIOFF_REGNUM && i != I387_FOOFF_REGNUM)
          {
-           unsigned char buf[4];
+           gdb_byte buf[4];
 
            regcache_raw_collect (regcache, i, buf);
 
@@ -473,17 +471,6 @@ i387_collect_fsave (const struct regcache *regcache, int regnum, void *fsave)
       }
 #undef I387_ST0_REGNUM
 }
-
-/* Fill register REGNUM (if it is a floating-point register) in *FSAVE
-   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 *FSAVE.  */
-
-void
-i387_fill_fsave (void *fsave, int regnum)
-{
-  i387_collect_fsave (current_regcache, regnum, fsave);
-}
 \f
 
 /* At fxsave_offset[REGNUM] you'll find the offset to the location in
@@ -536,7 +523,7 @@ static int fxsave_offset[] =
 
 #define FXSAVE_MXCSR_ADDR(fxsave) (fxsave + 24)
 
-static int i387_tag (const unsigned char *raw);
+static int i387_tag (const gdb_byte *raw);
 \f
 
 /* Fill register REGNUM in REGCACHE with the appropriate
@@ -547,7 +534,7 @@ void
 i387_supply_fxsave (struct regcache *regcache, int regnum, const void *fxsave)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache));
-  const char *regs = fxsave;
+  const gdb_byte *regs = fxsave;
   int i;
 
   gdb_assert (tdep->st0_regnum >= I386_ST0_REGNUM);
@@ -573,7 +560,7 @@ i387_supply_fxsave (struct regcache *regcache, int regnum, const void *fxsave)
        if (i >= I387_FCTRL_REGNUM && i < I387_XMM0_REGNUM
            && i != I387_FIOFF_REGNUM && i != I387_FOOFF_REGNUM)
          {
-           unsigned char val[4];
+           gdb_byte val[4];
 
            memcpy (val, FXSAVE_ADDR (regs, i), 2);
            val[2] = val[3] = 0;
@@ -637,7 +624,7 @@ void
 i387_collect_fxsave (const struct regcache *regcache, int regnum, void *fxsave)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
-  char *regs = fxsave;
+  gdb_byte *regs = fxsave;
   int i;
 
   gdb_assert (tdep->st0_regnum >= I386_ST0_REGNUM);
@@ -657,7 +644,7 @@ i387_collect_fxsave (const struct regcache *regcache, int regnum, void *fxsave)
        if (i >= I387_FCTRL_REGNUM && i < I387_XMM0_REGNUM
            && i != I387_FIOFF_REGNUM && i != I387_FOOFF_REGNUM)
          {
-           unsigned char buf[4];
+           gdb_byte buf[4];
 
            regcache_raw_collect (regcache, i, buf);
 
@@ -701,22 +688,11 @@ i387_collect_fxsave (const struct regcache *regcache, int regnum, void *fxsave)
 #undef I387_NUM_XMM_REGS
 }
 
-/* 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
-   reserved bits in *FXSAVE.  */
-
-void
-i387_fill_fxsave (void *fxsave, int regnum)
-{
-  i387_collect_fxsave (current_regcache, regnum, fxsave);
-}
-
 /* Recreate the FTW (tag word) valid bits from the 80-bit FP data in
    *RAW.  */
 
 static int
-i387_tag (const unsigned char *raw)
+i387_tag (const gdb_byte *raw)
 {
   int integer;
   unsigned int exponent;
This page took 0.027015 seconds and 4 git commands to generate.