* serial.h (SERIAL_SET_TTY_STATE): Comment return value.
[deliverable/binutils-gdb.git] / gdb / irix4-nat.c
index 97b63dc3a85c6727b5b729c8bdc9833ae09f97d9..e2a1ff29e61636ad653a245e7ea1b35dedc3de25 100644 (file)
@@ -1,5 +1,5 @@
 /* Native support for the SGI Iris running IRIX version 4, for GDB.
-   Copyright 1988, 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
+   Copyright 1988, 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
    Contributed by Alessandro Forin(af@cs.cmu.edu) at CMU
    and by Per Bothner(bothner@cs.wisc.edu) at U.Wisconsin.
    Implemented for Irix 4.x by Garrett A. Wollman.
@@ -21,6 +21,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #include "defs.h"
+#include "inferior.h"
 
 #include <sys/time.h>
 #include <sys/procfs.h>
@@ -61,7 +62,6 @@ fill_gregset (gregsetp, regno)
 {
   int regi;
   register greg_t *regp = (greg_t *)(gregsetp->gp_regs);
-  extern char registers[];
 
   /* same FIXME as above wrt 32*/
   for (regi = 0; regi < 32; regi++)
@@ -111,15 +111,14 @@ fill_fpregset (fpregsetp, regno)
 {
   int regi;
   char *from, *to;
-  extern char registers[];
 
   for (regi = FP0_REGNUM; regi < FP0_REGNUM + 32; regi++)
     {
       if ((regno == -1) || (regno == regi))
        {
          from = (char *) &registers[REGISTER_BYTE (regi)];
-         to = (char *) &(fpregsetp->fp_r.fp_regs[regi]);
-         bcopy(from, to, REGISTER_RAW_SIZE (regi));
+         to = (char *) &(fpregsetp->fp_r.fp_regs[regi - FP0_REGNUM]);
+         memcpy(to, from, REGISTER_RAW_SIZE (regi));
        }
     }
 
@@ -134,18 +133,35 @@ fill_fpregset (fpregsetp, regno)
    This routine returns true on success. */
 
 int
-get_longjmp_target(pc)
+get_longjmp_target (pc)
      CORE_ADDR *pc;
 {
+  char buf[TARGET_PTR_BIT / TARGET_CHAR_BIT];
   CORE_ADDR jb_addr;
 
-  jb_addr = read_register(A0_REGNUM);
+  jb_addr = read_register (A0_REGNUM);
 
-  if (target_read_memory(jb_addr + JB_PC * JB_ELEMENT_SIZE, pc,
-                        sizeof(CORE_ADDR)))
+  if (target_read_memory (jb_addr + JB_PC * JB_ELEMENT_SIZE, buf,
+                         TARGET_PTR_BIT / TARGET_CHAR_BIT))
     return 0;
 
-  SWAP_TARGET_AND_HOST(pc, sizeof(CORE_ADDR));
+  *pc = extract_address (buf, TARGET_PTR_BIT / TARGET_CHAR_BIT);
 
   return 1;
 }
+
+void
+fetch_core_registers (core_reg_sect, core_reg_size, which, reg_addr)
+     char *core_reg_sect;
+     unsigned core_reg_size;
+     int which;                        /* Unused */
+     unsigned int reg_addr;    /* Unused */
+{
+  if (core_reg_size != REGISTER_BYTES)
+    {
+      warning ("wrong size gregset struct in core file");
+      return;
+    }
+
+  memcpy ((char *)registers, core_reg_sect, core_reg_size);
+}
This page took 0.024135 seconds and 4 git commands to generate.