Writing to memory now works for both targets.
authorRob Savoye <rob@cygnus>
Tue, 11 Oct 1994 22:12:30 +0000 (22:12 +0000)
committerRob Savoye <rob@cygnus>
Tue, 11 Oct 1994 22:12:30 +0000 (22:12 +0000)
gdb/monitor.c
gdb/op50-rom.c

index 8439810..748a419 100644 (file)
@@ -534,6 +534,11 @@ get_reg_name (regno)
   if (sr_get_debug() > 5)
     printf ("Got name \"%s\" from regno #%d.\n", buf, regno);
 
+#ifdef LOG_FILE
+  fprintf (log_file, "Got name \"%s\" from regno #%d.\n", buf, regno);
+  fflush (log_file);
+#endif
+
   return buf;
 }
 
@@ -552,8 +557,8 @@ monitor_fetch_registers ()
 }
 
 /* 
- * monitor_fetch_register -- fetch register REGNO, or all registers if REGNO is -1.
- *  Returns errno value.
+ * monitor_fetch_register -- fetch register REGNO, or all registers if REGNO
+ *     is -1. Returns errno value.
  */
 void
 monitor_fetch_register (regno)
@@ -582,7 +587,7 @@ monitor_fetch_register (regno)
     supply_register (regno, (char *) &val);
     
     if (*ROMDELIM(GET_REG) != 0) {
-/***      expect (ROMRES(GET_REG)); ***/
+/***  expect (ROMRES(GET_REG)); ***/
       printf_monitor (CMD_END);
     }
     expect_prompt (1);
@@ -607,13 +612,18 @@ monitor_store_registers ()
   registers_changed ();
 }
 
-/* Store register REGNO, or all if REGNO == 0.
-   return errno value.  */
+/* 
+ * monitor_store_register -- store register REGNO, or all if REGNO == 0.
+ *     return errno value.
+ */
 void
 monitor_store_register (regno)
      int regno;
 {
   char *name;
+  int i;
+
+  i = read_register(regno);
 
 #ifdef LOG_FILE
   fprintf (log_file, "\nIn Store_register (regno=%d)\n", regno);
@@ -628,14 +638,12 @@ monitor_store_register (regno)
     name = get_reg_name (regno);
     if (STREQ(name, ""))
       return;
-    printf_monitor (ROMCMD(SET_REG), name);    /* send the command */
-    expect (name, 1);                          /* then strip the leading garbage */
+    printf_monitor (ROMCMD(SET_REG), name, read_register(regno));
+    expect (name, 1);                          /* strip the leading garbage */
     if (*ROMDELIM(SET_REG) != 0) {             /* if there's a delimiter */
       expect (ROMDELIM(SET_REG), 1);
-    }
-    
-    if (*ROMDELIM(SET_REG) != 0) {
-      printf_monitor ("%s%s\n",read_register(regno), CMD_END);
+      get_hex_word(1);
+      printf_monitor ("%d%s\n", i, CMD_END);
     }
     expect_prompt (1);
   }
@@ -668,8 +676,10 @@ monitor_files_info ()
          dev_name, baudrate);
 }
 
-/* Copy LEN bytes of data from debugger memory at MYADDR
-   to inferior's memory at MEMADDR.  Returns length moved.  */
+/*
+ * monitor_write_inferior_memory -- Copy LEN bytes of data from debugger
+ *     memory at MYADDR to inferior's memory at MEMADDR.  Returns length moved.
+ */
 int
 monitor_write_inferior_memory (memaddr, myaddr, len)
      CORE_ADDR memaddr;
@@ -683,23 +693,25 @@ monitor_write_inferior_memory (memaddr, myaddr, len)
   fprintf (log_file, "\nIn Write_inferior_memory (memaddr=%x, len=%d)\n", memaddr, len);
 #endif
 
-#define MEM_PROMPT ""                          /* FIXME, bogus */
-  for (i = 0; i < len; i++)
-    {
-      printf_monitor (SET_MEM, memaddr + i);
-      expect (sprintf (buf, MEM_PROMPT, memaddr + i), 1); 
+  if (sr_get_debug() > 0)
+    printf ("\nTrying to set 0x%x to 0x%x\n", memaddr, myaddr);
+
+  for (i = 0; i < len; i++) {
+    printf_monitor (ROMCMD(SET_MEM), memaddr + i, myaddr[i] );
+    if (*ROMDELIM(SET_MEM) != 0) {             /* if there's a delimiter */
+      expect (ROMDELIM(SET_MEM), 1);
       expect (CMD_DELIM);
       printf_monitor ("%x", myaddr[i]);
-      if (sr_get_debug())
-       printf ("\nSet 0x%x to 0x%x\n", memaddr + i, myaddr[i]);
-      if (CMD_END)
-       {
-/***     expect (sprintf (buf, MEM_PROMPT, memaddr + i +1), 1);          
-         expect (CMD_DELIM); ***/
-         printf_monitor (CMD_END);
-       }
-      expect_prompt (1);
     }
+/***    printf_monitor ("%x", myaddr[i]); ***/
+    if (sr_get_debug() > 1)
+      printf ("\nSet 0x%x to 0x%x\n", memaddr + i, myaddr[i]);
+    if (*ROMDELIM(SET_MEM) != 0) {
+      expect (CMD_DELIM);
+      printf_monitor (CMD_END);
+    }
+    expect_prompt (1);
+  }
   return len;
 }
 
@@ -835,18 +847,21 @@ monitor_insert_breakpoint (addr, shadow)
   fprintf (log_file, "\nIn Insert_breakpoint (addr=%x)\n", addr);
 #endif
 
-  for (i = 0; i <= MAX_MONITOR_BREAKPOINTS; i++)
-    if (breakaddr[i] == 0)
-      {
-       breakaddr[i] = addr;
-       if (sr_get_debug())
-         printf ("Breakpoint at %x\n", addr);
-       monitor_read_inferior_memory(addr, shadow, memory_breakpoint_size);
-       printf_monitor(SET_BREAK_CMD, addr);
-       expect_prompt(1);
-       return 0;
-      }
-  
+  if (sr_get_debug() > 4)
+    printf ("insert_breakpoint() addr = 0x%x\n", addr);
+
+  for (i = 0; i <= MAX_MONITOR_BREAKPOINTS; i++) {
+    if (breakaddr[i] == 0) {
+      breakaddr[i] = addr;
+      if (sr_get_debug() > 4)
+       printf ("Breakpoint at %x\n", addr);
+      monitor_read_inferior_memory(addr, shadow, memory_breakpoint_size);
+      printf_monitor(SET_BREAK_CMD, addr);
+      expect_prompt(1);
+      return 0;
+    }
+  }
+
   fprintf(stderr, "Too many breakpoints (> 16) for monitor\n");
   return 1;
 }
index a805e8f..abf8597 100644 (file)
@@ -111,7 +111,7 @@ struct monitor_ops op50n_cmds = {
   {
     "x %s\n",                          /* get a register */
     "=",                               /* delimiter between registers */
-    " ",                               /* the result */
+    "",                                        /* the result */
   },
   "r 0\n",                             /* download command */
   "#",                                 /* monitor command prompt */