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;
|
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)
|
void breakpoint_remove(struct target *target, target_addr_t address)
|
||||||
{
|
{
|
||||||
int found = 0;
|
int found = 0;
|
||||||
|
@ -350,7 +362,23 @@ void breakpoint_remove(struct target *target, target_addr_t address)
|
||||||
breakpoint_remove_internal(target, 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",
|
LOG_DEBUG("Delete all breakpoints for target: %s",
|
||||||
target_name(target));
|
target_name(target));
|
||||||
|
|
|
@ -63,6 +63,7 @@ int context_breakpoint_add(struct target *target,
|
||||||
int hybrid_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);
|
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(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);
|
struct breakpoint *breakpoint_find(struct target *target, target_addr_t address);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue