This is an automated email from Gerrit. Tomas Vanek ([email protected]) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/4857
-- gerrit commit 4db926239cc5ca6f1da39301623fcfde1dbcebc3 Author: Tomas Vanek <[email protected]> Date: Sat Jan 19 10:26:38 2019 +0100 cortex_m: fix stepping on FPB rev 1 Stepping in the maskisr auto mode sets breakpoint to step over interrupt service tasks. If the device has FPB rev 1, setting hard breakpoint is impossible on address over 0x1fffffff. Use soft type breakpoint for adresses over 0x1fffffff if FPB is rev 1. This may eventually fail if the code memory is not writeable, but there is nothing to do in such case. Change-Id: Ibdeeb506903a35d550b64f82c24c37a668de62b3 Signed-off-by: Tomas Vanek <[email protected]> diff --git a/src/target/cortex_m.c b/src/target/cortex_m.c index 06e1c1c..a7fbf21 100644 --- a/src/target/cortex_m.c +++ b/src/target/cortex_m.c @@ -874,10 +874,17 @@ static int cortex_m_step(struct target *target, int current, else { /* Set a temporary break point */ - if (breakpoint) + if (breakpoint) { retval = cortex_m_set_breakpoint(target, breakpoint); - else - retval = breakpoint_add(target, pc_value, 2, BKPT_HARD); + } else { + enum breakpoint_type type = BKPT_HARD; + if (cortex_m->fp_rev == 0 && pc_value > 0x1FFFFFFF) { + /* FPB rev.1 cannot handle such addr, try BKPT instr */ + type = BKPT_SOFT; + } + retval = breakpoint_add(target, pc_value, 2, type); + } + bool tmp_bp_set = (retval == ERROR_OK); /* No more breakpoints left, just do a step */ -- _______________________________________________ OpenOCD-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openocd-devel
