diff options
author | Tomas Vanek <vanekt@fbl.cz> | 2022-08-01 19:28:18 +0200 |
---|---|---|
committer | Tomas Vanek <vanekt@fbl.cz> | 2022-08-14 14:43:48 +0000 |
commit | 0e1fe03f4ba2b313d80c0a2d3c2ecfb7aee85a77 (patch) | |
tree | 24d34e0e927b104d4ab7b04385fec6ebb571ff85 /src | |
parent | dee7b7d8212dbe94d5afd6bba736de4fcd1a05ac (diff) | |
download | riscv-openocd-0e1fe03f4ba2b313d80c0a2d3c2ecfb7aee85a77.zip riscv-openocd-0e1fe03f4ba2b313d80c0a2d3c2ecfb7aee85a77.tar.gz riscv-openocd-0e1fe03f4ba2b313d80c0a2d3c2ecfb7aee85a77.tar.bz2 |
target/arm: do not expose 'arm reg', 'arm mcr/mrc' commands on Cortex-M
Tcl commands 'arm reg', 'arm mcr/mrc' do not work on M-profile based devices.
Isolate them from 'arm core_state' and 'arm disassemble' and do not chain
them from armv7m_command_handlers.
Change-Id: I2c6befdf82575e95cf05ed158ab5e6faa1a182c3
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: https://review.openocd.org/c/openocd/+/7101
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
Diffstat (limited to 'src')
-rw-r--r-- | src/target/arm.h | 1 | ||||
-rw-r--r-- | src/target/armv4_5.c | 36 | ||||
-rw-r--r-- | src/target/armv7m.c | 6 |
3 files changed, 28 insertions, 15 deletions
diff --git a/src/target/arm.h b/src/target/arm.h index f262255..bcfa85c 100644 --- a/src/target/arm.h +++ b/src/target/arm.h @@ -273,6 +273,7 @@ void arm_free_reg_cache(struct arm *arm); struct reg_cache *armv8_build_reg_cache(struct target *target); extern const struct command_registration arm_command_handlers[]; +extern const struct command_registration arm_all_profiles_command_handlers[]; int arm_arch_state(struct target *target); const char *arm_get_gdb_arch(struct target *target); diff --git a/src/target/armv4_5.c b/src/target/armv4_5.c index 09cf143..3217726 100644 --- a/src/target/armv4_5.c +++ b/src/target/armv4_5.c @@ -1126,20 +1126,6 @@ static const struct command_registration arm_exec_command_handlers[] = { .usage = "", }, { - .name = "core_state", - .handler = handle_arm_core_state_command, - .mode = COMMAND_EXEC, - .usage = "['arm'|'thumb']", - .help = "display/change ARM core state", - }, - { - .name = "disassemble", - .handler = handle_arm_disassemble_command, - .mode = COMMAND_EXEC, - .usage = "address [count ['thumb']]", - .help = "disassemble instructions", - }, - { .name = "mcr", .mode = COMMAND_EXEC, .jim_handler = &jim_mcrmrc, @@ -1154,10 +1140,32 @@ static const struct command_registration arm_exec_command_handlers[] = { .usage = "cpnum op1 CRn CRm op2", }, { + .chain = arm_all_profiles_command_handlers, + }, + COMMAND_REGISTRATION_DONE +}; + +const struct command_registration arm_all_profiles_command_handlers[] = { + { + .name = "core_state", + .handler = handle_arm_core_state_command, + .mode = COMMAND_EXEC, + .usage = "['arm'|'thumb']", + .help = "display/change ARM core state", + }, + { + .name = "disassemble", + .handler = handle_arm_disassemble_command, + .mode = COMMAND_EXEC, + .usage = "address [count ['thumb']]", + .help = "disassemble instructions", + }, + { .chain = semihosting_common_handlers, }, COMMAND_REGISTRATION_DONE }; + const struct command_registration arm_command_handlers[] = { { .name = "arm", diff --git a/src/target/armv7m.c b/src/target/armv7m.c index 790e70e..be0de50 100644 --- a/src/target/armv7m.c +++ b/src/target/armv7m.c @@ -1085,7 +1085,11 @@ int armv7m_maybe_skip_bkpt_inst(struct target *target, bool *inst_found) const struct command_registration armv7m_command_handlers[] = { { - .chain = arm_command_handlers, + .name = "arm", + .mode = COMMAND_ANY, + .help = "ARM command group", + .usage = "", + .chain = arm_all_profiles_command_handlers, }, COMMAND_REGISTRATION_DONE }; |