+/*#define HAVE_STEPPABLE_WATCHPOINT 1*/
+
+#define STOPPED_BY_WATCHPOINT(W) \
+ ((W).kind == TARGET_WAITKIND_STOPPED \
+ && (W).value.sig == TARGET_SIGNAL_TRAP \
+ && (frv_stopped_data_address() != ((CORE_ADDR)0)))
+extern CORE_ADDR frv_stopped_data_address(void);
+
+/* Use these macros for watchpoint insertion/deletion. */
+#define target_insert_watchpoint(addr, len, type) \
+ remote_insert_watchpoint (addr, len, type)
+#define target_remove_watchpoint(addr, len, type) \
+ remote_remove_watchpoint (addr, len, type)
+#define target_insert_hw_breakpoint(addr, shadow) \
+ remote_insert_hw_breakpoint (addr, 1)
+#define target_remove_hw_breakpoint(addr, shadow) \
+ remote_remove_hw_breakpoint (addr, 1)
+#define target_stopped_data_address() frv_stopped_data_address()
+
+/* These declarations should be in remote.h, no? */
+extern int remote_insert_watchpoint (CORE_ADDR addr, int len, int type);
+extern int remote_remove_watchpoint (CORE_ADDR addr, int len, int type);
+extern int remote_insert_hw_breakpoint (CORE_ADDR addr, int len);
+extern int remote_remove_hw_breakpoint (CORE_ADDR addr, int len);
Sigh! Another target and still the hardware breakpoint problem isn't
fixed. I did some digging and I note you are not the author here :-)