* remove-vx.c (vx_read_register, vx_write_register): collapse
authorK. Richard Pixley <rich@cygnus>
Tue, 8 Jun 1993 20:56:23 +0000 (20:56 +0000)
committerK. Richard Pixley <rich@cygnus>
Tue, 8 Jun 1993 20:56:23 +0000 (20:56 +0000)
  ifdef I80960 else (assumes) m68k into parameterizable macros
  VX_NUM_REGS and VX_SIZE_FPREGS.
* config/m68k/tm-vx68.h, config/i960/tm-vx960.h (VX_NUM_REGS,
  VX_SIZE_FPREGS): new definitions.

gdb/ChangeLog
gdb/config/i960/tm-vx960.h
gdb/config/m68k/tm-vx68.h
gdb/remote-vx.c

index 3ca7d03b1d0221b607d6400aae5efda15602e70d..483b79a2568e27b8a8dceed33a9358dd10f0e248 100644 (file)
@@ -1,3 +1,11 @@
+Tue Jun  8 13:45:07 1993  K. Richard Pixley  (rich@sendai.cygnus.com)
+
+       * remove-vx.c (vx_read_register, vx_write_register): collapse
+         ifdef I80960 else (assumes) m68k into parameterizable macros
+         VX_NUM_REGS and VX_SIZE_FPREGS.
+       * config/m68k/tm-vx68.h, config/i960/tm-vx960.h (VX_NUM_REGS,
+         VX_SIZE_FPREGS): new definitions.
+
 Tue Jun  8 11:08:29 1993  Jim Kingdon  (kingdon@cygnus.com)
 
        * symfile.{c,h} (generic_load): New function.
index 521f15bc6c52a957c4beb5b6419cbff8b47bfd01..decc9acf717f319640a225311baa486635107bce 100644 (file)
@@ -40,3 +40,14 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 /* Breakpoint patching is handled at the target end in VxWorks.  */
 /* #define BREAKPOINT {0x00, 0x3e, 0x00, 0x66} */
+
+/* Number of registers in a ptrace_getregs call. */
+
+#define VX_NUM_REGS (16 + 16 + 3)
+
+/* Number of registers in a ptrace_getfpregs call. */
+
+    /* @@ Can't use this -- the rdb library for the 960 target
+       doesn't support setting or retrieving FP regs.  KR  */
+
+/* #define VX_SIZE_FPREGS (REGISTER_RAW_SIZE (FP0_REGNUM) * 4) */
index 07b8027d800e07578985cb8cc259717c96c81f58..e47accffce9d1fb46aa052e3958b9948bc5d911d 100644 (file)
@@ -76,3 +76,12 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
    This routine returns true on success */
 
 #define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
+
+/* Number of registers in a ptrace_getregs call. */
+
+#define VX_NUM_REGS (18)
+
+/* Number of registers in a ptrace_getfpregs call. */
+
+#define VX_SIZE_FPREGS (8 * REGISTER_RAW_SIZE (FP0_REGNUM) \
+                       + (3 * sizeof (REGISTER_TYPE)))
index 97605a91ccaf2ada60ff2fae9180b319b3d34a35..bb621a546d574724550e39e8e930bd5c6ed02e09 100644 (file)
@@ -385,11 +385,7 @@ vx_read_register (regno)
   
   ptrace_in.pid = inferior_pid;
   ptrace_out.info.more_data = (caddr_t) &out_data;
-#ifndef I80960
-  out_data.len   = 18 * REGISTER_RAW_SIZE (0);         /* FIXME m68k hack */
-#else
-  out_data.len = (16 + 16 + 3) * REGISTER_RAW_SIZE (0);
-#endif
+  out_data.len   = VX_NUM_REGS * REGISTER_RAW_SIZE (0);
   out_data.bytes = (caddr_t) registers;
   
   status = net_ptrace_clnt_call (PTRACE_GETREGS, &ptrace_in, &ptrace_out);
@@ -401,50 +397,17 @@ vx_read_register (regno)
       perror_with_name ("net_ptrace_clnt_call(PTRACE_GETREGS)");
     }
   
-#ifdef I80960
-
-  {
+#ifdef VX_SIZE_FPREGS
     /* If the target has floating point registers, fetch them.
        Otherwise, zero the floating point register values in
        registers[] for good measure, even though we might not
        need to.  */
-    /* @@ Can't use this -- the rdb library for the 960 target
-       doesn't support setting or retrieving FP regs.  KR  */
-#if 0
-    struct fp_status inferior_fp_registers;
-
-    if (target_has_fp)
-      {
-       ptrace_in.pid = inferior_pid;
-       ptrace_out.info.more_data = (caddr_t) &inferior_fp_registers;
-       status = net_ptrace_clnt_call (PTRACE_GETFPREGS,
-                                      &ptrace_in, &ptrace_out);
-       if (status)
-         error (rpcerr);
-       if (ptrace_out.status == -1)
-         {
-           errno = ptrace_out.errno;
-           perror_with_name ("net_ptrace_clnt_call(PTRACE_GETFPREGS)");
-         }
-
-       bcopy (&inferior_fp_registers, &registers[REGISTER_BYTE (FP0_REGNUM)],
-              REGISTER_RAW_SIZE (FP0_REGNUM) * 4);
-      }
-    else
-      {
-       bzero ((char *) &registers[REGISTER_BYTE (FP0_REGNUM)],
-              REGISTER_RAW_SIZE (FP0_REGNUM) * 4);
-      }
-#endif
-  }
-#else  /* not 960, thus must be 68000:  FIXME!  */
 
   if (target_has_fp)
     {
       ptrace_in.pid = inferior_pid;
       ptrace_out.info.more_data = (caddr_t) &out_data;
-      out_data.len   =  8 * REGISTER_RAW_SIZE (FP0_REGNUM)     /* FIXME */
-                    + (3 * sizeof (REGISTER_TYPE));
+      out_data.len   =  VX_SIZE_FPREGS;
       out_data.bytes = (caddr_t) &registers[REGISTER_BYTE (FP0_REGNUM)];
   
       status = net_ptrace_clnt_call (PTRACE_GETFPREGS, &ptrace_in, &ptrace_out);
@@ -458,12 +421,9 @@ vx_read_register (regno)
     }
   else
     {
-      bzero (&registers[REGISTER_BYTE (FP0_REGNUM)],
-            8 * REGISTER_RAW_SIZE (FP0_REGNUM));
-      bzero (&registers[REGISTER_BYTE (FPC_REGNUM)],
-            3 * sizeof (REGISTER_TYPE));
+      bzero (&registers[REGISTER_BYTE (FP0_REGNUM)], VX_SIZE_FPREGS);
     }
-#endif  /* various architectures */
+#endif /* VX_SIZE_FPREGS */
 }
 
 /* Prepare to store registers.  Since we will store all of them,
@@ -502,15 +462,7 @@ vx_write_register (regno)
 
   in_data.bytes = registers;
 
-#ifdef I80960
-
-  in_data.len = (16 + 16 + 3) * sizeof (REGISTER_TYPE);
-
-#else  /* not 960 -- assume m68k -- FIXME */
-
-  in_data.len = 18 * sizeof (REGISTER_TYPE);
-
-#endif  /* Different register sets */
+  in_data.len = VX_NUM_REGS * sizeof (REGISTER_TYPE);
 
   /* XXX change second param to be a proc number */
   status = net_ptrace_clnt_call (PTRACE_SETREGS, &ptrace_in, &ptrace_out);
@@ -522,6 +474,7 @@ vx_write_register (regno)
       perror_with_name ("net_ptrace_clnt_call(PTRACE_SETREGS)");
     }
 
+#ifdef VX_SIZE_FPREGS
   /* Store floating point registers if the target has them.  */
 
   if (target_has_fp)
@@ -531,18 +484,8 @@ vx_write_register (regno)
       ptrace_in.info.more_data = (caddr_t) &in_data;
 
 
-#ifdef I80960
-#if 0 /* @@ Not supported by target.  */
       in_data.bytes = &registers[REGISTER_BYTE (FP0_REGNUM)];
-      in_data.len = 4 * REGISTER_RAW_SIZE (FP0_REGNUM);
-#endif
-#else  /* not 960 -- assume m68k -- FIXME */
-
-      in_data.bytes = &registers[REGISTER_BYTE (FP0_REGNUM)];
-      in_data.len = (8 * REGISTER_RAW_SIZE (FP0_REGNUM)
-                      + (3 * sizeof (REGISTER_TYPE)));
-
-#endif  /* Different register sets */
+      in_data.len = VX_SIZE_FPREGS;
 
       status = net_ptrace_clnt_call (PTRACE_SETFPREGS, &ptrace_in, &ptrace_out);
       if (status)
@@ -553,6 +496,7 @@ vx_write_register (regno)
          perror_with_name ("net_ptrace_clnt_call(PTRACE_SETFPREGS)");
        }
     }
+#endif  /* VX_SIZE_FPREGS */
 }
 
 /* Copy LEN bytes to or from remote inferior's memory starting at MEMADDR