Minor bug fixes from last big checkin.
[deliverable/binutils-gdb.git] / gdb / remote-mm.c
index d3c67e65549255cfa699c57abe1ab0c535e52cc3..19bff73c7b8844c52fdb510bc5bfa9f6e2108ed3 100644 (file)
@@ -1,5 +1,5 @@
 /* Remote debugging interface for Am290*0 running MiniMON monitor, for GDB.
-   Copyright (C) 1990, 1991 Free Software Foundation, Inc.
+   Copyright 1990, 1991, 1992 Free Software Foundation, Inc.
    Originally written by Daniel Mann at AMD.
 
 This file is part of GDB.
@@ -29,7 +29,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
        You should get tagged at compile time if you need to make any 
        changes/additions.  */
  
-#include <stdio.h>
 #include "defs.h"
 #include "inferior.h"
 #include "wait.h"
@@ -59,12 +58,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 extern int stop_soon_quietly;           /* for wait_for_inferior */
 
-extern struct value *call_function_by_hand();
-
 static void mm_resume();
 static void mm_fetch_registers ();
 static int fetch_register ();
-static int mm_store_registers ();
+static void mm_store_registers ();
 static int store_register ();
 static int regnum_to_srnum();
 static void  mm_close ();
@@ -287,9 +284,9 @@ mm_open (name, from_tty)
   /* Find the first whitespace character, it separates dev_name from
      prog_name.  */
   for (p = name;
-       *p != '\0' && !isspace (*p); p++)
+       p && *p && !isspace (*p); p++)
     ;
-  if (*p == '\0')
+  if (p == 0 || *p == '\0')
 erroid:
     error ("Usage : <command> <serial-device> <baud-rate> [progname]");
   dev_name = (char*)malloc (p - name + 1);
@@ -796,7 +793,7 @@ int regno;
   {
     int val = -1;
     supply_register (FPE_REGNUM, &val);
-    supply_register (INT_REGNUM, &val);
+    supply_register (INTE_REGNUM, &val);
     supply_register (FPS_REGNUM, &val);
     supply_register (EXO_REGNUM, &val);
   }
@@ -806,19 +803,24 @@ int       regno;
 
 
 /****************************************************** REMOTE_STORE_REGISTERS
-** Store register regno into the target.  
+ * Store register regno into the target.  
  * If regno==-1 then store all the registers.
+ * Result is 0 for success, -1 for failure.
  */
 
-static int 
+static void
 mm_store_registers (regno)
 int regno;
 {
+  int result;
   
-  if (regno >= 0)
-       return(store_register(regno));
+  if (regno >= 0) {
+    store_register(regno);
+    return;
+  }
 
   DENTER("mm_store_registers()");
+  result = 0;
 
   out_msg_buf->write_r_msg.code= WRITE_REQ;
 
@@ -830,7 +832,9 @@ int regno;
   out_msg_buf->write_r_msg.data[0] = read_register (GR1_REGNUM);
 
   msg_send_serial( out_msg_buf);
-  expect_msg(WRITE_ACK,in_msg_buf,1);
+  if (!expect_msg(WRITE_ACK,in_msg_buf,1)) {
+       result = -1;
+  }
 
 #if defined(GR64_REGNUM)
 /* Global registers gr64-gr95 */
@@ -843,7 +847,9 @@ int regno;
       out_msg_buf->write_r_msg.data[regno-GR64_REGNUM] = read_register (regno);
     }
   msg_send_serial(out_msg_buf);
-  expect_msg(WRITE_ACK,in_msg_buf,1);
+  if (!expect_msg(WRITE_ACK,in_msg_buf,1)) {
+       result = -1;
+  }
 #endif /* GR64_REGNUM */
 
 /* Global registers gr96-gr127 */
@@ -855,7 +861,9 @@ int regno;
       out_msg_buf->write_r_msg.data[regno-GR96_REGNUM] = read_register (regno);
     }
   msg_send_serial( out_msg_buf);
-  expect_msg(WRITE_ACK,in_msg_buf,1);
+  if (!expect_msg(WRITE_ACK,in_msg_buf,1)) {
+       result = -1;
+  }
 
 /* Local Registers */
   out_msg_buf->write_r_msg.memory_space = LOCAL_REG;
@@ -868,7 +876,9 @@ int regno;
       out_msg_buf->write_r_msg.data[regno-LR0_REGNUM] = read_register (regno);
     }
   msg_send_serial( out_msg_buf);
-  expect_msg(WRITE_ACK,in_msg_buf,1);
+  if (!expect_msg(WRITE_ACK,in_msg_buf,1)) {
+       result = -1;
+  }
 
 /* Protected Special Registers */ 
   /* VAB through TMR */
@@ -879,7 +889,9 @@ int regno;
   for (regno = 0 ; regno<=9 ; regno++) /* VAB through TMR */
     out_msg_buf->write_r_msg.data[regno] = read_register (SR_REGNUM(regno));
   msg_send_serial( out_msg_buf);
-  expect_msg(WRITE_ACK,in_msg_buf,1);
+  if (!expect_msg(WRITE_ACK,in_msg_buf,1)) {
+       result = -1;
+  }
 
   /* PC0, PC1, PC2 possibly as shadow registers */
   out_msg_buf->write_r_msg.byte_count = 4* 3;
@@ -891,7 +903,9 @@ int regno;
   else 
     out_msg_buf->write_r_msg.address = 10;     /* PC0 */
   msg_send_serial( out_msg_buf);
-  expect_msg(WRITE_ACK,in_msg_buf,1);
+  if (!expect_msg(WRITE_ACK,in_msg_buf,1)) {
+       result = -1;
+  }
 
   /* LRU and MMU */
   out_msg_buf->write_r_msg.byte_count = 4* 2;
@@ -900,7 +914,9 @@ int regno;
   for (regno=13 ; regno<=14 ; regno++) /* LRU and MMU */
     out_msg_buf->write_r_msg.data[regno-13] = read_register (SR_REGNUM(regno));
   msg_send_serial( out_msg_buf);
-  expect_msg(WRITE_ACK,in_msg_buf,1);
+  if (!expect_msg(WRITE_ACK,in_msg_buf,1)) {
+       result = -1;
+  }
 
 /* Unprotected Special Registers */ 
   out_msg_buf->write_r_msg.byte_count = 4*8;
@@ -909,10 +925,13 @@ int regno;
   for (regno = 128 ; regno<=135 ; regno++)
     out_msg_buf->write_r_msg.data[regno-128] = read_register(SR_REGNUM(regno));
   msg_send_serial( out_msg_buf);
-  expect_msg(WRITE_ACK,in_msg_buf,1);
+  if (!expect_msg(WRITE_ACK,in_msg_buf,1)) {
+       result = -1;
+  }
  
   registers_changed ();
   DEXIT("mm_store_registers()");
+  /* FIXME return result;  it is ignored by caller.  */
 }
 
 /*************************************************** REMOTE_PREPARE_TO_STORE */
@@ -948,22 +967,6 @@ CORE_ADDR addr;
         return(addr);
 #endif
 }
-/* FIXME!  Merge these two.  */
-static int
-mm_xfer_inferior_memory (memaddr, myaddr, len, write)
-     CORE_ADDR memaddr;
-     char *myaddr;
-     int len;
-     int write;
-{
-
-  memaddr = translate_addr(memaddr);
-
-  if (write)
-    return mm_write_inferior_memory (memaddr, myaddr, len);
-  else
-    return mm_read_inferior_memory (memaddr, myaddr, len);
-}
 
 /******************************************************* REMOTE_FILES_INFO */
 static void
@@ -1081,7 +1084,7 @@ int       from_tty;
   /* You may need to do an init_target_mm() */
   /* init_target_mm(?,?,?,?,?,?,?,?); */
   immediate_quit--;
-  symbol_file_add (arg_string, from_tty, text_addr, 0);
+  /* symbol_file_add (arg_string, from_tty, text_addr, 0, 0); */
 #endif
 
 }
@@ -1157,6 +1160,24 @@ mm_read_inferior_memory(memaddr, myaddr, len)
   return(nread);
 }
 
+/* FIXME!  Merge these two.  */
+static int
+mm_xfer_inferior_memory (memaddr, myaddr, len, write)
+     CORE_ADDR memaddr;
+     char *myaddr;
+     int len;
+     int write;
+{
+
+  memaddr = translate_addr(memaddr);
+
+  if (write)
+    return mm_write_inferior_memory (memaddr, myaddr, len);
+  else
+    return mm_read_inferior_memory (memaddr, myaddr, len);
+}
+
+
 /********************************************************** MSG_SEND_SERIAL
 ** This function is used to send a message over the
 ** serial line.
@@ -1487,7 +1508,7 @@ int       regno;
                case FC_REGNUM:  return(134); 
                case CR_REGNUM:  return(135); 
                case FPE_REGNUM: return(160); 
-               case INT_REGNUM: return(161); 
+               case INTE_REGNUM: return(161); 
                case FPS_REGNUM: return(162); 
                case EXO_REGNUM:return(164); 
                default:
@@ -1659,7 +1680,6 @@ struct target_ops mm_ops = {
         0, 0, 0, 0, 0,          /* Terminal handling */
         mm_kill,               /* FIXME, kill */
         mm_load, 
-        call_function_by_hand,
         0,                      /* lookup_symbol */
         mm_create_inferior,  /* create_inferior */
         mm_mourn,            /* mourn_inferior FIXME */
This page took 0.026284 seconds and 4 git commands to generate.