1999-02-10 Jason Molenda (jsm@bugshack.cygnus.com)
[deliverable/binutils-gdb.git] / gdb / mipsv4-nat.c
index b9c06929ed665612c4932863341186c00d6a85d5..df4b6e9a090e36b66eb4f61d6732cdcfc5eca607 100644 (file)
@@ -1,5 +1,5 @@
 /* Native support for MIPS running SVR4, for GDB.
-   Copyright 1994 Free Software Foundation, Inc.
+   Copyright 1994, 1995 Free Software Foundation, Inc.
 
 This file is part of GDB.
 
@@ -15,7 +15,7 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include "defs.h"
 #include "inferior.h"
@@ -43,14 +43,23 @@ supply_gregset (gregsetp)
 {
   register int regi;
   register greg_t *regp = &(*gregsetp)[0];
+  static char zerobuf[MAX_REGISTER_RAW_SIZE] = {0};
 
-  for(regi = 0; regi <= CXT_RA; regi++)
+  for (regi = 0; regi <= CXT_RA; regi++)
     supply_register (regi, (char *)(regp + regi));
 
   supply_register (PC_REGNUM, (char *)(regp + CXT_EPC));
   supply_register (HI_REGNUM, (char *)(regp + CXT_MDHI));
   supply_register (LO_REGNUM, (char *)(regp + CXT_MDLO));
   supply_register (CAUSE_REGNUM, (char *)(regp + CXT_CAUSE));
+
+  /* Fill inaccessible registers with zero.  */
+  supply_register (PS_REGNUM, zerobuf);
+  supply_register (BADVADDR_REGNUM, zerobuf);
+  supply_register (FP_REGNUM, zerobuf);
+  supply_register (UNUSED_REGNUM, zerobuf);
+  for (regi = FIRST_EMBED_REGNUM; regi <= LAST_EMBED_REGNUM; regi++)
+    supply_register (regi, zerobuf);
 }
 
 void
@@ -69,7 +78,7 @@ fill_gregset (gregsetp, regno)
     *(regp + CXT_EPC) = *(greg_t *) &registers[REGISTER_BYTE (PC_REGNUM)];
 
   if ((regno == -1) || (regno == CAUSE_REGNUM))
-    *(regp + CXT_CAUSE) = *(greg_t *) &registers[REGISTER_BYTE (PS_REGNUM)];
+    *(regp + CXT_CAUSE) = *(greg_t *) &registers[REGISTER_BYTE (CAUSE_REGNUM)];
 
   if ((regno == -1) || (regno == HI_REGNUM))
     *(regp + CXT_MDHI) = *(greg_t *) &registers[REGISTER_BYTE (HI_REGNUM)];
@@ -91,6 +100,7 @@ supply_fpregset (fpregsetp)
      fpregset_t *fpregsetp;
 {
   register int regi;
+  static char zerobuf[MAX_REGISTER_RAW_SIZE] = {0};
 
   for (regi = 0; regi < 32; regi++)
     supply_register (FP0_REGNUM + regi,
@@ -99,6 +109,7 @@ supply_fpregset (fpregsetp)
   supply_register (FCRCS_REGNUM, (char *)&fpregsetp->fp_csr);
 
   /* FIXME: how can we supply FCRIR_REGNUM?  The ABI doesn't tell us. */
+  supply_register (FCRIR_REGNUM, zerobuf);
 }
 
 void
This page took 0.023392 seconds and 4 git commands to generate.