OSDN Git Service

* i387-tdep.c (i387_supply_fxsave): Skip the SSE registers if
authorMark Kettenis <kettenis@gnu.org>
Sun, 12 May 2002 21:16:08 +0000 (21:16 +0000)
committerMark Kettenis <kettenis@gnu.org>
Sun, 12 May 2002 21:16:08 +0000 (21:16 +0000)
the're not supported by the current architecture.
(i387_fill_fxsave): Likewise.

gdb/ChangeLog
gdb/i387-tdep.c

index 6c27c11..6ec785b 100644 (file)
@@ -1,3 +1,9 @@
+2002-05-12  Mark Kettenis  <kettenis@gnu.org>
+
+       * i387-tdep.c (i387_supply_fxsave): Skip the SSE registers if
+       the're not supported by the current architecture.
+       (i387_fill_fxsave): Likewise.
+
 2002-05-12  Fred Fish  <fnf@redhat.com>
 
        * symfile.c (default_symfile_offsets): Arrange for uninitialized
index 000264f..59b60d7 100644 (file)
@@ -1,6 +1,6 @@
 /* Intel 387 floating point stuff.
-   Copyright 1988, 1989, 1991, 1992, 1993, 1994, 1998, 1999, 2000, 2001
-   Free Software Foundation, Inc.
+   Copyright 1988, 1989, 1991, 1992, 1993, 1994, 1998, 1999, 2000,
+   2001, 2002 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -542,9 +542,12 @@ static int i387_tag (unsigned char *raw);
 void
 i387_supply_fxsave (char *fxsave)
 {
-  int i;
+  int i, last_regnum = MXCSR_REGNUM;
+
+  if (gdbarch_tdep (current_gdbarch)->num_xmm_regs == 0)
+    last_regnum = FOP_REGNUM;
 
-  for (i = FP0_REGNUM; i <= MXCSR_REGNUM; i++)
+  for (i = FP0_REGNUM; i <= last_regnum; i++)
     {
       /* Most of the FPU control registers occupy only 16 bits in
         the fxsave area.  Give those a special treatment.  */
@@ -601,9 +604,12 @@ i387_supply_fxsave (char *fxsave)
 void
 i387_fill_fxsave (char *fxsave, int regnum)
 {
-  int i;
+  int i, last_regnum = MXCSR_REGNUM;
+
+  if (gdbarch_tdep (current_gdbarch)->num_xmm_regs == 0)
+    last_regnum = FOP_REGNUM;
 
-  for (i = FP0_REGNUM; i <= MXCSR_REGNUM; i++)
+  for (i = FP0_REGNUM; i <= last_regnum; i++)
     if (regnum == -1 || regnum == i)
       {
        /* Most of the FPU control registers occupy only 16 bits in