* sparc-nat.c (fetch_inferior_registers, store_inferior_registers):
authorJohn Gilmore <gnu@cygnus>
Tue, 11 Jan 1994 08:59:41 +0000 (08:59 +0000)
committerJohn Gilmore <gnu@cygnus>
Tue, 11 Jan 1994 08:59:41 +0000 (08:59 +0000)
Read and write the fsr (float status register) to/from the child
process.  This avoids random float exceptions when running under
GDB, and probably obsoletes Peter Schauer's change of May 24 '93
(which remains for safety).

gdb/ChangeLog
gdb/sparc-nat.c

index 1a06726..2303918 100644 (file)
@@ -1,3 +1,11 @@
+Tue Jan 11 00:53:46 1994  John Gilmore  (gnu@cygnus.com)
+
+       * sparc-nat.c (fetch_inferior_registers, store_inferior_registers):
+       Read and write the fsr (float status register) to/from the child
+       process.  This avoids random float exceptions when running under
+       GDB, and probably obsoletes Peter Schauer's change of May 24 '93
+       (which remains for safety).
+
 Mon Jan 10 23:16:42 1994  John Gilmore  (gnu@cygnus.com)
 
        * a29k-tdep.c (examine_prologue):  Don't worry if the ASGEQ
index e1f0235..5fcdb92 100644 (file)
@@ -98,9 +98,9 @@ fetch_inferior_registers (regno)
            perror("ptrace_getfpregs");
       memcpy (&registers[REGISTER_BYTE (FP0_REGNUM)], &inferior_fp_registers,
              sizeof inferior_fp_registers.fpu_fr);
-      /* memcpy (&registers[REGISTER_BYTE (FPS_REGNUM)],
+      memcpy (&registers[REGISTER_BYTE (FPS_REGNUM)],
             &inferior_fp_registers.Fpu_fsr,
-            sizeof (FPU_FSR_TYPE));  FIXME???  -- gnu@cyg */
+            sizeof (FPU_FSR_TYPE));
       for (i = FP0_REGNUM; i <= FP0_REGNUM+31; i++)
        register_valid[i] = 1;
       register_valid[FPS_REGNUM] = 1;
@@ -223,17 +223,19 @@ store_inferior_registers (regno)
     {
       if (!register_valid[FP0_REGNUM+9]) abort();
       /* Initialize inferior_fp_registers members that gdb doesn't set
-        by reading them from the inferior.  */
+        by reading them from the inferior.  This may not be needed
+        any more, now that we set Fpu_fsr.  */
       if (0 !=
         ptrace (PTRACE_GETFPREGS, inferior_pid,
                 (PTRACE_ARG3_TYPE) &inferior_fp_registers, 0))
         perror("ptrace_getfpregs");
+
       memcpy (&inferior_fp_registers, &registers[REGISTER_BYTE (FP0_REGNUM)],
              sizeof inferior_fp_registers.fpu_fr);
 
-/*    memcpy (&inferior_fp_registers.Fpu_fsr, 
+      memcpy (&inferior_fp_registers.Fpu_fsr, 
              &registers[REGISTER_BYTE (FPS_REGNUM)], sizeof (FPU_FSR_TYPE));
-****/
+
       if (0 !=
         ptrace (PTRACE_SETFPREGS, inferior_pid,
                 (PTRACE_ARG3_TYPE) &inferior_fp_registers, 0))