2004-03-10 Kei Sakamoto <sakamoto.kei@renesas.com>
authorKazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
Wed, 10 Mar 2004 00:18:44 +0000 (00:18 +0000)
committerKazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
Wed, 10 Mar 2004 00:18:44 +0000 (00:18 +0000)
* remote-m32r-sdi.c: Support hardware watchpoint.

gdb/ChangeLog
gdb/remote-m32r-sdi.c

index 486d14e2cb654630984f72a261abc4d6864f547e..d367d488c90a23c4cb95e04a38ee8c91d480bc98 100644 (file)
@@ -1,3 +1,7 @@
+2004-03-10  Kei Sakamoto  <sakamoto.kei@renesas.com>
+
+       * remote-m32r-sdi.c: Support hardware watchpoint.
+
 2004-03-09  Daniel Jacobowitz  <drow@mvista.com>
 
        * user-regs.c: Update copyright years.
index 7f0b90cf2383ca7be4b780a103ad78115b52377a..e2118587ea59f719b7d7b538b11e836f11fdd0d1 100644 (file)
@@ -1434,13 +1434,14 @@ m32r_stop (void)
 }
 
 
-/* Tell whether this target can support a hardware breakpoint. 
-   This implements the TARGET_CAN_USE_HARDWARE_WATCHPOINT macro.  */
+/* Tell whether this target can support a hardware breakpoint.  CNT
+   is the number of hardware breakpoints already installed.  This
+   implements the TARGET_CAN_USE_HARDWARE_WATCHPOINT macro.  */
 
 int
-m32r_can_use_hardware_watchpoint (void)
+m32r_can_use_hw_watchpoint (int type, int cnt, int othertype)
 {
-  return max_access_breaks;
+  return sdi_desc != NULL && cnt < max_access_breaks;
 }
 
 /* Set a data watchpoint.  ADDR and LEN should be obvious.  TYPE is 0
@@ -1448,12 +1449,12 @@ m32r_can_use_hardware_watchpoint (void)
    watchpoint. */
 
 int
-m32r_set_watchpoint (CORE_ADDR addr, int len, int type)
+m32r_insert_watchpoint (CORE_ADDR addr, int len, int type)
 {
   int i;
 
   if (remote_debug)
-    fprintf_unfiltered (gdb_stdlog, "m32r_set_watchpoint(%08lx,%d,%d)\n",
+    fprintf_unfiltered (gdb_stdlog, "m32r_insert_watchpoint(%08lx,%d,%d)\n",
                        addr, len, type);
 
   for (i = 0; i < MAX_ACCESS_BREAKS; i++)
@@ -1618,6 +1619,11 @@ init_m32r_ops (void)
   m32r_ops.to_files_info = m32r_files_info;
   m32r_ops.to_insert_breakpoint = m32r_insert_breakpoint;
   m32r_ops.to_remove_breakpoint = m32r_remove_breakpoint;
+  m32r_ops.to_can_use_hw_breakpoint = m32r_can_use_hw_watchpoint;
+  m32r_ops.to_insert_watchpoint = m32r_insert_watchpoint;
+  m32r_ops.to_remove_watchpoint = m32r_remove_watchpoint;
+  m32r_ops.to_stopped_by_watchpoint = m32r_stopped_by_watchpoint;
+  m32r_ops.to_stopped_data_address = m32r_stopped_data_address;
   m32r_ops.to_kill = m32r_kill;
   m32r_ops.to_load = m32r_load;
   m32r_ops.to_create_inferior = m32r_create_inferior;