+/* free up a breakpoint */
+static void breakpoint_free(target_t *target, breakpoint_t *breakpoint_remove)
+{
+ breakpoint_t *breakpoint = target->breakpoints;
+ breakpoint_t **breakpoint_p = &target->breakpoints;
+
+ while (breakpoint)
+ {
+ if (breakpoint==breakpoint_remove)
+ break;
+ breakpoint_p = &breakpoint->next;
+ breakpoint = breakpoint->next;
+ }
+
+ if (breakpoint==NULL)
+ return;
+
+ target_remove_breakpoint(target, breakpoint);
+
+ (*breakpoint_p) = breakpoint->next;
+ free(breakpoint->orig_instr);
+ free(breakpoint);
+}
+
+void breakpoint_remove(target_t *target, u32 address)