diff options
author | Spencer Oliver <ntfreak@users.sourceforge.net> | 2010-02-26 23:14:51 +0000 |
---|---|---|
committer | Spencer Oliver <ntfreak@users.sourceforge.net> | 2010-02-28 22:47:51 +0000 |
commit | 4c9f29bd9c9e38c3f495f8c26869f4dfe8fe9983 (patch) | |
tree | 7ab728802d87f67aab4941241846e4befe34b074 | |
parent | b8d8953ae9995829a61ce7b34e544f004bb23c55 (diff) | |
download | openocd+libswd-4c9f29bd9c9e38c3f495f8c26869f4dfe8fe9983.tar.gz openocd+libswd-4c9f29bd9c9e38c3f495f8c26869f4dfe8fe9983.tar.bz2 openocd+libswd-4c9f29bd9c9e38c3f495f8c26869f4dfe8fe9983.tar.xz openocd+libswd-4c9f29bd9c9e38c3f495f8c26869f4dfe8fe9983.zip |
ARMv7M: add arm cmd group
- Add arm cmd group to armv7m cmd chain.
- arm cmd's now check the core type before running a cmd.
- todo: add support for armv7m registers for reg cmd.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
-rw-r--r-- | src/target/armv4_5.c | 30 | ||||
-rw-r--r-- | src/target/armv7m.c | 3 |
2 files changed, 31 insertions, 2 deletions
diff --git a/src/target/armv4_5.c b/src/target/armv4_5.c index a4a15b40..36101b02 100644 --- a/src/target/armv4_5.c +++ b/src/target/armv4_5.c @@ -627,6 +627,12 @@ COMMAND_HANDLER(handle_armv4_5_reg_command) return ERROR_FAIL; } + if (armv4_5->core_type != ARM_MODE_ANY) + { + command_print(CMD_CTX, "Microcontroller Profile not supported - use standard reg cmd"); + return ERROR_OK; + } + if (!is_arm_mode(armv4_5->core_mode)) return ERROR_FAIL; @@ -706,6 +712,13 @@ COMMAND_HANDLER(handle_armv4_5_core_state_command) return ERROR_FAIL; } + if (armv4_5->core_type == ARM_MODE_THREAD) + { + /* armv7m not supported */ + command_print(CMD_CTX, "Unsupported Command"); + return ERROR_OK; + } + if (CMD_ARGC > 0) { if (strcmp(CMD_ARGV[0], "arm") == 0) @@ -723,7 +736,7 @@ COMMAND_HANDLER(handle_armv4_5_core_state_command) return ERROR_OK; } -COMMAND_HANDLER(handle_armv4_5_disassemble_command) +COMMAND_HANDLER(handle_arm_disassemble_command) { int retval = ERROR_OK; struct target *target = get_current_target(CMD_CTX); @@ -737,6 +750,12 @@ COMMAND_HANDLER(handle_armv4_5_disassemble_command) return ERROR_FAIL; } + if (arm->core_type == ARM_MODE_THREAD) + { + /* armv7m is always thumb mode */ + thumb = 1; + } + switch (CMD_ARGC) { case 3: if (strcmp(CMD_ARGV[2], "thumb") != 0) @@ -821,6 +840,13 @@ static int jim_mcrmrc(Jim_Interp *interp, int argc, Jim_Obj *const *argv) return JIM_ERR; } + if (arm->core_type == ARM_MODE_THREAD) + { + /* armv7m not supported */ + LOG_ERROR("Unsupported Command"); + return ERROR_OK; + } + if ((argc < 6) || (argc > 7)) { /* FIXME use the command name to verify # params... */ LOG_ERROR("%s: wrong number of arguments", __func__); @@ -941,7 +967,7 @@ static const struct command_registration arm_exec_command_handlers[] = { }, { .name = "disassemble", - .handler = handle_armv4_5_disassemble_command, + .handler = handle_arm_disassemble_command, .mode = COMMAND_EXEC, .usage = "address [count ['thumb']]", .help = "disassemble instructions ", diff --git a/src/target/armv7m.c b/src/target/armv7m.c index 056ac7b2..ec111760 100644 --- a/src/target/armv7m.c +++ b/src/target/armv7m.c @@ -878,6 +878,9 @@ static const struct command_registration armv7m_exec_command_handlers[] = { }; const struct command_registration armv7m_command_handlers[] = { { + .chain = arm_command_handlers, + }, + { .name = "dap", .mode = COMMAND_EXEC, .help = "Cortex DAP command group", |