]> git.gag.com Git - fw/openocd/commitdiff
target/cortex_m: Change sleep to running state
authorKevin Yang <kangyang@google.com>
Wed, 4 Nov 2020 18:39:29 +0000 (10:39 -0800)
committerTomas Vanek <vanekt@fbl.cz>
Wed, 11 Nov 2020 21:22:16 +0000 (21:22 +0000)
When the core is in sleep mode, the core is no longer retiring
instructions. Cortext M remains in "unknown" state. This patch converts
sleep mode to "running" state.

Change-Id: I1e9b6c9be51fd0f1f6ce81af9b1f5f9f1f43c661
Signed-off-by: Kevin Yang <kangyang@google.com>
Reviewed-on: http://openocd.zylin.com/5921
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Tested-by: jenkins
src/target/cortex_m.c
src/target/target.h

index 08b3661ea0876dc4443e9bd3d7180ab5aa34b326..0c1a99fc0204dd6eb58efd210af3d16a6e37e73a 100644 (file)
@@ -656,13 +656,9 @@ static int cortex_m_poll(struct target *target)
                }
        }
 
-       /* REVISIT when S_SLEEP is set, it's in a Sleep or DeepSleep state.
-        * How best to model low power modes?
-        */
-
        if (target->state == TARGET_UNKNOWN) {
-               /* check if processor is retiring instructions */
-               if (cortex_m->dcb_dhcsr & S_RETIRE_ST) {
+               /* check if processor is retiring instructions or sleeping */
+               if (cortex_m->dcb_dhcsr & S_RETIRE_ST || cortex_m->dcb_dhcsr & S_SLEEP) {
                        target->state = TARGET_RUNNING;
                        retval = ERROR_OK;
                }
index 44463b74f55c353777b4161c2d8f40318924b7b0..b9ae2f78e1255f4ff4f71f59ef6dc4f61edd0448 100644 (file)
@@ -47,7 +47,7 @@ struct gdb_fileio_info;
 
 /*
  * TARGET_UNKNOWN = 0: we don't know anything about the target yet
- * TARGET_RUNNING = 1: the target is executing user code
+ * TARGET_RUNNING = 1: the target is executing or ready to execute user code
  * TARGET_HALTED  = 2: the target is not executing code, and ready to talk to the
  * debugger. on an xscale it means that the debug handler is executing
  * TARGET_RESET   = 3: the target is being held in reset (only a temporary state,