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/5876

-- gerrit

commit e7cd57a0618958fbd520768989132cce024fa7f0
Author: Tomas Vanek <[email protected]>
Date:   Thu Oct 22 20:36:30 2020 +0200

    target/armv7m, cortex_m: fix misleading comments
    
    Change-Id: I4fea29f07f4d3b8b2578b538ef0eef5f1eea285f
    Signed-off-by: Tomas Vanek <[email protected]>

diff --git a/src/target/armv7m.c b/src/target/armv7m.c
index 7bfa738..7e46006 100644
--- a/src/target/armv7m.c
+++ b/src/target/armv7m.c
@@ -486,8 +486,7 @@ int armv7m_start_algorithm(struct target *target,
                return ERROR_TARGET_NOT_HALTED;
        }
 
-       /* refresh core register cache
-        * Not needed if core register cache is always consistent with target 
process state */
+       /* Store all non-debug execution registers to armv7m_algorithm_info 
context */
        for (unsigned i = 0; i < armv7m->arm.core_cache->num_regs; i++) {
 
                armv7m_algorithm_info->context[i] = buf_get_u32(
diff --git a/src/target/cortex_m.c b/src/target/cortex_m.c
index 361320e..f845720 100644
--- a/src/target/cortex_m.c
+++ b/src/target/cortex_m.c
@@ -821,15 +821,19 @@ static int cortex_m_resume(struct target *target, int 
current,
                 * in parallel with disabled interrupts can cause local faults
                 * to not be taken.
                 *
-                * REVISIT this clearly breaks non-debug execution, since the
-                * PRIMASK register state isn't saved/restored...  workaround
-                * by never resuming app code after debug execution.
+                * This breaks non-debug (application) execution if not
+                * called from armv7m_start_algorithm() which saves registers.
                 */
                buf_set_u32(r->value, 0, 1, 1);
                r->dirty = true;
                r->valid = true;
 
-               /* Make sure we are in Thumb mode */
+               /* Make sure we are in Thumb mode, set xPSR.T bit */
+               /* armv7m_start_algorithm() initializes entire xPSR register.
+                * This duplicity handles the case when cortex_m_resume()
+                * is used with the debug_execution flag directly,
+                * not called through armv7m_start_algorithm().
+                */
                r = armv7m->arm.cpsr;
                buf_set_u32(r->value, 24, 1, 1);
                r->dirty = true;

-- 


_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to