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>
This commit is contained in:
parent
b8d8953ae9
commit
4c9f29bd9c
|
@ -627,6 +627,12 @@ COMMAND_HANDLER(handle_armv4_5_reg_command)
|
||||||
return ERROR_FAIL;
|
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))
|
if (!is_arm_mode(armv4_5->core_mode))
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
|
||||||
|
@ -706,6 +712,13 @@ COMMAND_HANDLER(handle_armv4_5_core_state_command)
|
||||||
return ERROR_FAIL;
|
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 (CMD_ARGC > 0)
|
||||||
{
|
{
|
||||||
if (strcmp(CMD_ARGV[0], "arm") == 0)
|
if (strcmp(CMD_ARGV[0], "arm") == 0)
|
||||||
|
@ -723,7 +736,7 @@ COMMAND_HANDLER(handle_armv4_5_core_state_command)
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_HANDLER(handle_armv4_5_disassemble_command)
|
COMMAND_HANDLER(handle_arm_disassemble_command)
|
||||||
{
|
{
|
||||||
int retval = ERROR_OK;
|
int retval = ERROR_OK;
|
||||||
struct target *target = get_current_target(CMD_CTX);
|
struct target *target = get_current_target(CMD_CTX);
|
||||||
|
@ -737,6 +750,12 @@ COMMAND_HANDLER(handle_armv4_5_disassemble_command)
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (arm->core_type == ARM_MODE_THREAD)
|
||||||
|
{
|
||||||
|
/* armv7m is always thumb mode */
|
||||||
|
thumb = 1;
|
||||||
|
}
|
||||||
|
|
||||||
switch (CMD_ARGC) {
|
switch (CMD_ARGC) {
|
||||||
case 3:
|
case 3:
|
||||||
if (strcmp(CMD_ARGV[2], "thumb") != 0)
|
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;
|
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)) {
|
if ((argc < 6) || (argc > 7)) {
|
||||||
/* FIXME use the command name to verify # params... */
|
/* FIXME use the command name to verify # params... */
|
||||||
LOG_ERROR("%s: wrong number of arguments", __func__);
|
LOG_ERROR("%s: wrong number of arguments", __func__);
|
||||||
|
@ -941,7 +967,7 @@ static const struct command_registration arm_exec_command_handlers[] = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "disassemble",
|
.name = "disassemble",
|
||||||
.handler = handle_armv4_5_disassemble_command,
|
.handler = handle_arm_disassemble_command,
|
||||||
.mode = COMMAND_EXEC,
|
.mode = COMMAND_EXEC,
|
||||||
.usage = "address [count ['thumb']]",
|
.usage = "address [count ['thumb']]",
|
||||||
.help = "disassemble instructions ",
|
.help = "disassemble instructions ",
|
||||||
|
|
|
@ -877,6 +877,9 @@ static const struct command_registration armv7m_exec_command_handlers[] = {
|
||||||
COMMAND_REGISTRATION_DONE
|
COMMAND_REGISTRATION_DONE
|
||||||
};
|
};
|
||||||
const struct command_registration armv7m_command_handlers[] = {
|
const struct command_registration armv7m_command_handlers[] = {
|
||||||
|
{
|
||||||
|
.chain = arm_command_handlers,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.name = "dap",
|
.name = "dap",
|
||||||
.mode = COMMAND_EXEC,
|
.mode = COMMAND_EXEC,
|
||||||
|
|
Loading…
Reference in New Issue