summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSpencer Oliver <ntfreak@users.sourceforge.net>2010-02-26 23:14:51 +0000
committerSpencer Oliver <ntfreak@users.sourceforge.net>2010-02-28 22:47:51 +0000
commit4c9f29bd9c9e38c3f495f8c26869f4dfe8fe9983 (patch)
tree7ab728802d87f67aab4941241846e4befe34b074
parentb8d8953ae9995829a61ce7b34e544f004bb23c55 (diff)
downloadopenocd+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.c30
-rw-r--r--src/target/armv7m.c3
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",