From 561984c8f672b5b35a78e80529107ec0599fc037 Mon Sep 17 00:00:00 2001 From: Spencer Oliver Date: Thu, 25 Oct 2012 16:37:14 +0100 Subject: [PATCH] hla: fix watchpoints not being set Watchpoints were not being enabled when the hl adapter target was resumed. This effects both stlink and icdi interfaces. Change-Id: Ia9f8a9415be97a467cd099b63b6bc9f7f37d0c0d Signed-off-by: Spencer Oliver Reviewed-on: http://openocd.zylin.com/931 Tested-by: jenkins --- src/target/cortex_m.c | 2 +- src/target/cortex_m.h | 1 + src/target/hla_target.c | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/target/cortex_m.c b/src/target/cortex_m.c index 4d9daf5ca0..ca2211fb43 100644 --- a/src/target/cortex_m.c +++ b/src/target/cortex_m.c @@ -677,7 +677,7 @@ static int cortex_m3_soft_reset_halt(struct target *target) return ERROR_OK; } -static void cortex_m3_enable_breakpoints(struct target *target) +void cortex_m3_enable_breakpoints(struct target *target) { struct breakpoint *breakpoint = target->breakpoints; diff --git a/src/target/cortex_m.h b/src/target/cortex_m.h index a9bd7a4971..11d70524bc 100644 --- a/src/target/cortex_m.h +++ b/src/target/cortex_m.h @@ -194,6 +194,7 @@ int cortex_m3_set_watchpoint(struct target *target, struct watchpoint *watchpoin int cortex_m3_unset_watchpoint(struct target *target, struct watchpoint *watchpoint); int cortex_m3_add_watchpoint(struct target *target, struct watchpoint *watchpoint); int cortex_m3_remove_watchpoint(struct target *target, struct watchpoint *watchpoint); +void cortex_m3_enable_breakpoints(struct target *target); void cortex_m3_enable_watchpoints(struct target *target); void cortex_m3_dwt_setup(struct cortex_m3_common *cm3, struct target *target); diff --git a/src/target/hla_target.c b/src/target/hla_target.c index 272c25e052..3c3b841757 100644 --- a/src/target/hla_target.c +++ b/src/target/hla_target.c @@ -551,6 +551,12 @@ static int adapter_resume(struct target *target, int current, return ERROR_TARGET_NOT_HALTED; } + if (!debug_execution) { + target_free_all_working_areas(target); + cortex_m3_enable_breakpoints(target); + cortex_m3_enable_watchpoints(target); + } + pc = armv7m->arm.pc; if (!current) { buf_set_u32(pc->value, 0, 32, address); -- 2.30.2