target: Add function to remove all breakpoints
Change-Id: I4718926844a2c8bcfd78d7a8792f6ded293548ef Signed-off-by: Marc Schink <openocd-dev@marcschink.de> Reviewed-on: http://openocd.zylin.com/4915 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
parent
d9ffe75e25
commit
9960e805b3
|
@ -332,6 +332,18 @@ static int breakpoint_remove_internal(struct target *target, target_addr_t addre
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void breakpoint_remove_all_internal(struct target *target)
|
||||
{
|
||||
struct breakpoint *breakpoint = target->breakpoints;
|
||||
|
||||
while (breakpoint) {
|
||||
struct breakpoint *tmp = breakpoint;
|
||||
breakpoint = breakpoint->next;
|
||||
breakpoint_free(target, tmp);
|
||||
}
|
||||
}
|
||||
|
||||
void breakpoint_remove(struct target *target, target_addr_t address)
|
||||
{
|
||||
int found = 0;
|
||||
|
@ -350,7 +362,23 @@ void breakpoint_remove(struct target *target, target_addr_t address)
|
|||
breakpoint_remove_internal(target, address);
|
||||
}
|
||||
|
||||
void breakpoint_clear_target_internal(struct target *target)
|
||||
void breakpoint_remove_all(struct target *target)
|
||||
{
|
||||
if (target->smp) {
|
||||
struct target_list *head;
|
||||
struct target *curr;
|
||||
head = target->head;
|
||||
while (head != (struct target_list *)NULL) {
|
||||
curr = head->target;
|
||||
breakpoint_remove_all_internal(curr);
|
||||
head = head->next;
|
||||
}
|
||||
} else {
|
||||
breakpoint_remove_all_internal(target);
|
||||
}
|
||||
}
|
||||
|
||||
static void breakpoint_clear_target_internal(struct target *target)
|
||||
{
|
||||
LOG_DEBUG("Delete all breakpoints for target: %s",
|
||||
target_name(target));
|
||||
|
|
|
@ -63,6 +63,7 @@ int context_breakpoint_add(struct target *target,
|
|||
int hybrid_breakpoint_add(struct target *target,
|
||||
target_addr_t address, uint32_t asid, uint32_t length, enum breakpoint_type type);
|
||||
void breakpoint_remove(struct target *target, target_addr_t address);
|
||||
void breakpoint_remove_all(struct target *target);
|
||||
|
||||
struct breakpoint *breakpoint_find(struct target *target, target_addr_t address);
|
||||
|
||||
|
|
Loading…
Reference in New Issue