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

Reply via email to