[RFA/m32r] Support hw watchpoint

Kei Sakamoto
2004-03-05T04:04:11Z

[-- Attachment #1: Type: text/plain, Size: 497 bytes --]

Hello,

The attached patch adds hardware watchpoint support to m32rsdi target,
which is a remote target of m32r architecture.
# Thank you for Andrew's suggestion.

This patch is small because I've already implemented watchpoint functions
in remote-m32r-sdi.c. I just didn't know how to define watchpoint's interface
in multi-arch.

OK to commit?

Kei Sakamoto
Renesas Technology Corp.

===

2004-03-05 Kei Sakamoto <sakamoto.kei@renesas.com>

* remote-m32r-sdi.c: Support hardware watchpoint.

[-- Attachment #2: remote-m32r-sdi.c.patch --]
[-- Type: application/octet-stream, Size: 2038 bytes --]

Index: remote-m32r-sdi.c
===================================================================
RCS file: /cvs/src/src/gdb/remote-m32r-sdi.c,v
retrieving revision 1.1
diff -u -r1.1 remote-m32r-sdi.c
--- remote-m32r-sdi.c 16 Oct 2003 02:36:39 -0000 1.1
+++ remote-m32r-sdi.c 5 Mar 2004 03:01:27 -0000
@@ -1434,13 +1434,14 @@
}

-/* 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 @@
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 @@
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;