This is an automated email from Gerrit.

Spencer Oliver ([email protected]) just uploaded a new patch set to Gerrit, 
which you can find at http://openocd.zylin.com/947

-- gerrit

commit da0aa93a91ba250bafb696b16391047dc5c8ca1d
Author: Spencer Oliver <[email protected]>
Date:   Wed Oct 31 14:21:43 2012 +0000

    cortex: autostep correctly handle user breakpoint
    
    If we halt due to a breakpoint make sure that we do not remove it during a
    step, only remove breakpoints we have created.
    
    Change-Id: I060168e54e53637d4fbf3cbcf62072efdb353807
    Signed-off-by: Spencer Oliver <[email protected]>

diff --git a/src/target/cortex_m.c b/src/target/cortex_m.c
index 81d6ccf..c8e7bc4 100644
--- a/src/target/cortex_m.c
+++ b/src/target/cortex_m.c
@@ -855,7 +855,10 @@ static int cortex_m3_step(struct target *target, int 
current,
                         */
 
                        /* Set a temporary break point */
-                       retval = breakpoint_add(target, pc_value, 2, 
BKPT_TYPE_BY_ADDR(pc_value));
+                       if (breakpoint)
+                               retval = cortex_m3_set_breakpoint(target, 
breakpoint);
+                       else
+                               retval = breakpoint_add(target, pc_value, 2, 
BKPT_TYPE_BY_ADDR(pc_value));
                        bool tmp_bp_set = (retval == ERROR_OK);
 
                        /* No more breakpoints left, just do a step */
@@ -879,8 +882,11 @@ static int cortex_m3_step(struct target *target, int 
current,
                                        isr_timed_out = ((timeval_ms() - 
t_start) > 500);
                                } while (!((cortex_m3->dcb_dhcsr & S_HALT) || 
isr_timed_out));
 
-                               /* Remove the temporary breakpoint */
-                               breakpoint_remove(target, pc_value);
+                               /* only remove breakpoint if we created it */
+                               if (breakpoint)
+                                       cortex_m3_unset_breakpoint(target, 
breakpoint);
+                               else
+                                       breakpoint_remove(target, pc_value);
 
                                if (isr_timed_out) {
                                        LOG_DEBUG("Interrupt handlers didn't 
complete within time, "

-- 

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to