* serial.h (SERIAL_SET_TTY_STATE): Comment return value.
[deliverable/binutils-gdb.git] / gdb / lynx-nat.c
index 4510972cf05c183f744571e227aab856f14a9b4d..78cfecbb777e106eb4ad18df87822c8404155748 100644 (file)
@@ -235,14 +235,14 @@ fetch_inferior_registers (regno)
 
       sp = read_register (SP_REGNUM);
 
-      target_xfer_memory (sp, &registers[REGISTER_BYTE(I0_REGNUM)],
+      target_xfer_memory (sp + FRAME_SAVED_I0,
+                         &registers[REGISTER_BYTE(I0_REGNUM)],
                          8 * REGISTER_RAW_SIZE (I0_REGNUM), 0);
       for (i = I0_REGNUM; i <= I7_REGNUM; i++)
        register_valid[i] = 1;
 
-      sp += 8 * REGISTER_RAW_SIZE (I0_REGNUM);
-
-      target_xfer_memory (sp, &registers[REGISTER_BYTE(L0_REGNUM)],
+      target_xfer_memory (sp + FRAME_SAVED_L0,
+                         &registers[REGISTER_BYTE(L0_REGNUM)],
                          8 * REGISTER_RAW_SIZE (L0_REGNUM), 0);
       for (i = L0_REGNUM; i <= L0_REGNUM + 7; i++)
        register_valid[i] = 1;
@@ -329,10 +329,12 @@ store_inferior_registers (regno)
        {
          if (!register_valid[L0_REGNUM+5])
            abort();
-         target_xfer_memory (sp, &registers[REGISTER_BYTE (I0_REGNUM)],
+         target_xfer_memory (sp + FRAME_SAVED_I0,
+                             &registers[REGISTER_BYTE (I0_REGNUM)],
                              8 * REGISTER_RAW_SIZE (I0_REGNUM), 1);
-         sp += 8 * REGISTER_RAW_SIZE (I0_REGNUM);
-         target_xfer_memory (sp, &registers[REGISTER_BYTE (L0_REGNUM)],
+
+         target_xfer_memory (sp + FRAME_SAVED_L0,
+                             &registers[REGISTER_BYTE (L0_REGNUM)],
                              8 * REGISTER_RAW_SIZE (L0_REGNUM), 1);
        }
       else if (regno >= L0_REGNUM && regno <= I7_REGNUM)
@@ -341,9 +343,10 @@ store_inferior_registers (regno)
            abort();
          if (regno >= L0_REGNUM && regno <= L0_REGNUM + 7)
            regoffset = REGISTER_BYTE (regno) - REGISTER_BYTE (L0_REGNUM)
-             + 8 * REGISTER_RAW_SIZE (I0_REGNUM);
+             + FRAME_SAVED_L0;
          else
-           regoffset = REGISTER_BYTE (regno) - REGISTER_BYTE (I0_REGNUM);
+           regoffset = REGISTER_BYTE (regno) - REGISTER_BYTE (I0_REGNUM)
+             + FRAME_SAVED_I0;
          target_xfer_memory (sp + regoffset, &registers[REGISTER_BYTE (regno)],
                              REGISTER_RAW_SIZE (regno), 1);
        }
@@ -373,7 +376,7 @@ store_inferior_registers (regno)
        perror_with_name ("Sparc fetch_inferior_registers(ptrace)");
       }
 }
-#endif
+#endif /* SPARC */
 
 #ifndef SPARC
 
@@ -424,7 +427,7 @@ fetch_inferior_registers (regno)
 
   ecp = registers_addr (inferior_pid);
 
-  for (regno = reglo; regno <= reghi && regmap[regno] != -1; regno++)
+  for (regno = reglo; regno <= reghi; regno++)
     {
       char buf[MAX_REGISTER_RAW_SIZE];
       int ptrace_fun = PTRACE_PEEKTHREAD;
@@ -471,7 +474,7 @@ store_inferior_registers (regno)
 
   ecp = registers_addr (inferior_pid);
 
-  for (regno = reglo; regno <= reghi && regmap[regno] != -1; regno++)
+  for (regno = reglo; regno <= reghi; regno++)
     {
       int ptrace_fun = PTRACE_POKEUSER;
 
@@ -600,4 +603,11 @@ fetch_core_registers (core_reg_sect, core_reg_size, which, reg_addr)
   for (regno = 0; regno < NUM_REGS; regno++)
     supply_register (regno, core_reg_sect + offsetof (st_t, ec)
                     + regmap[regno]);
+
+#ifdef SPARC
+/* Fetching this register causes all of the I & L regs to be read from the
+   stack and validated.  */
+
+  fetch_inferior_registers (I0_REGNUM);
+#endif
 }
This page took 0.024069 seconds and 4 git commands to generate.