* m88k-nat.c (store_inferior_registers): When writing all registers,
authorJim Kingdon <jkingdon@engr.sgi.com>
Sat, 2 Oct 1993 21:07:50 +0000 (21:07 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Sat, 2 Oct 1993 21:07:50 +0000 (21:07 +0000)
don't try to write EXIP_REGNUM or ENIP_REGNUM (not needed for this
case, and they cause trouble).

gdb/ChangeLog
gdb/m88k-nat.c

index 58f3bac912f4705df66e0f7ea1fc4d76fa65eb74..8d2c0d2aa474ccca9c235fb471a7c629a64f1a98 100644 (file)
@@ -1,5 +1,9 @@
 Sat Oct  2 15:50:41 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)
 
+       * m88k-nat.c (store_inferior_registers): When writing all registers,
+       don't try to write EXIP_REGNUM or ENIP_REGNUM (not needed for this
+       case, and they cause trouble).
+
        * TODO: Don't suggest doing fast watchpoints by stepping a line
        at a time.  That would be really hairy and still not fast enough.
        Do suggest debug registers and page table diddling.
index d474aa2a3019eebb4577f509166a085ee6e36b42..18781d63c26aa43c952ab40fe5d7bb71dff0d695 100644 (file)
@@ -114,60 +114,62 @@ store_inferior_registers (regno)
 
   struct USER u;
 
-
   unsigned int offset = (char *) &u.pt_r0 - (char *) &u;
 
   regaddr = offset;
 
+  /* Don't try to deal with EXIP_REGNUM or ENIP_REGNUM, because I think either
+     svr3 doesn't run on an 88110, or the kernel isolates the different (not
+     completely sure this is true, but seems to be.  */
   if (regno >= 0)
     {
-/*      regaddr = register_addr (regno, offset); */
-        if (regno < PC_REGNUM)
-           { 
-            regaddr = offset + regno * sizeof (int);
-             errno = 0;
-             ptrace (6, inferior_pid,
-                    (PTRACE_ARG3_TYPE) regaddr, read_register (regno));
-             if (errno != 0)
-              {
-                sprintf (buf, "writing register number %d", regno);
-                perror_with_name (buf);
-              }
-           }
-       else if (regno == SXIP_REGNUM)
-             ptrace (6, inferior_pid,
-                    (PTRACE_ARG3_TYPE) SXIP_OFFSET, read_register(regno));
-       else if (regno == SNIP_REGNUM)
-            ptrace (6, inferior_pid,
-                    (PTRACE_ARG3_TYPE) SNIP_OFFSET, read_register(regno));
-       else if (regno == SFIP_REGNUM)
-            ptrace (6, inferior_pid,
-                    (PTRACE_ARG3_TYPE) SFIP_OFFSET, read_register(regno));
-       else printf ("Bad register number for store_inferior routine\n");
-    }
-  else { 
-         for (regno = 0; regno < NUM_REGS - 3; regno++)
-           {
       /*      regaddr = register_addr (regno, offset); */
-              errno = 0;
-              regaddr = offset + regno * sizeof (int);
-              ptrace (6, inferior_pid,
-                     (PTRACE_ARG3_TYPE) regaddr, read_register (regno));
-              if (errno != 0)
-               {
-                 sprintf (buf, "writing register number %d", regno);
-                 perror_with_name (buf);
-               }
-           }
-        ptrace (6,inferior_pid,
-                (PTRACE_ARG3_TYPE) SXIP_OFFSET,read_register(SXIP_REGNUM));
-        ptrace (6,inferior_pid,
-                (PTRACE_ARG3_TYPE) SNIP_OFFSET,read_register(SNIP_REGNUM));
-        ptrace (6,inferior_pid,
-                (PTRACE_ARG3_TYPE) SFIP_OFFSET,read_register(SFIP_REGNUM));
-       }       
-           
-
+      if (regno < PC_REGNUM)
+       { 
+         regaddr = offset + regno * sizeof (int);
+         errno = 0;
+         ptrace (6, inferior_pid,
+                 (PTRACE_ARG3_TYPE) regaddr, read_register (regno));
+         if (errno != 0)
+           {
+             sprintf (buf, "writing register number %d", regno);
+             perror_with_name (buf);
+           }
+       }
+      else if (regno == SXIP_REGNUM)
+       ptrace (6, inferior_pid,
+               (PTRACE_ARG3_TYPE) SXIP_OFFSET, read_register(regno));
+      else if (regno == SNIP_REGNUM)
+       ptrace (6, inferior_pid,
+               (PTRACE_ARG3_TYPE) SNIP_OFFSET, read_register(regno));
+      else if (regno == SFIP_REGNUM)
+       ptrace (6, inferior_pid,
+               (PTRACE_ARG3_TYPE) SFIP_OFFSET, read_register(regno));
+      else
+       printf ("Bad register number for store_inferior routine\n");
+    }
+  else
+    { 
+      for (regno = 0; regno < PC_REGNUM; regno++)
+       {
+         /*      regaddr = register_addr (regno, offset); */
+         errno = 0;
+         regaddr = offset + regno * sizeof (int);
+         ptrace (6, inferior_pid,
+                 (PTRACE_ARG3_TYPE) regaddr, read_register (regno));
+         if (errno != 0)
+           {
+             sprintf (buf, "writing register number %d", regno);
+             perror_with_name (buf);
+           }
+       }
+      ptrace (6,inferior_pid,
+             (PTRACE_ARG3_TYPE) SXIP_OFFSET,read_register(SXIP_REGNUM));
+      ptrace (6,inferior_pid,
+             (PTRACE_ARG3_TYPE) SNIP_OFFSET,read_register(SNIP_REGNUM));
+      ptrace (6,inferior_pid,
+             (PTRACE_ARG3_TYPE) SFIP_OFFSET,read_register(SFIP_REGNUM));
+    }
 }