target/arm: make 'arm core_state' command compatible with Cortex-M
[fw/openocd] / src / target / armv4_5.c
index 2b347924fed12432b3b13c1207686873414b584b..09cf143e65858be82bb67922dfa6452bbb9ee972 100644 (file)
@@ -905,32 +905,33 @@ COMMAND_HANDLER(handle_armv4_5_reg_command)
        return ERROR_OK;
 }
 
-COMMAND_HANDLER(handle_armv4_5_core_state_command)
+COMMAND_HANDLER(handle_arm_core_state_command)
 {
        struct target *target = get_current_target(CMD_CTX);
        struct arm *arm = target_to_arm(target);
+       int ret = ERROR_OK;
 
        if (!is_arm(arm)) {
                command_print(CMD, "current target isn't an ARM");
                return ERROR_FAIL;
        }
 
-       if (arm->core_type == ARM_CORE_TYPE_M_PROFILE) {
-               /* armv7m not supported */
-               command_print(CMD, "Unsupported Command");
-               return ERROR_OK;
-       }
-
        if (CMD_ARGC > 0) {
-               if (strcmp(CMD_ARGV[0], "arm") == 0)
-                       arm->core_state = ARM_STATE_ARM;
+               if (strcmp(CMD_ARGV[0], "arm") == 0) {
+                       if (arm->core_type == ARM_CORE_TYPE_M_PROFILE) {
+                               command_print(CMD, "arm mode not supported on Cortex-M");
+                               ret = ERROR_FAIL;
+                       } else {
+                               arm->core_state = ARM_STATE_ARM;
+                       }
+               }
                if (strcmp(CMD_ARGV[0], "thumb") == 0)
                        arm->core_state = ARM_STATE_THUMB;
        }
 
        command_print(CMD, "core state: %s", arm_state_strings[arm->core_state]);
 
-       return ERROR_OK;
+       return ret;
 }
 
 COMMAND_HANDLER(handle_arm_disassemble_command)
@@ -1126,7 +1127,7 @@ static const struct command_registration arm_exec_command_handlers[] = {
        },
        {
                .name = "core_state",
-               .handler = handle_armv4_5_core_state_command,
+               .handler = handle_arm_core_state_command,
                .mode = COMMAND_EXEC,
                .usage = "['arm'|'thumb']",
                .help = "display/change ARM core state",