From 4c9f29bd9c9e38c3f495f8c26869f4dfe8fe9983 Mon Sep 17 00:00:00 2001 From: Spencer Oliver Date: Fri, 26 Feb 2010 23:14:51 +0000 Subject: 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 --- src/target/armv4_5.c | 30 ++++++++++++++++++++++++++++-- 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 a4a15b4..36101b0 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 056ac7b..ec11176 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", -- cgit v1.1