aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTomas Vanek <vanekt@fbl.cz>2022-08-01 19:28:18 +0200
committerTomas Vanek <vanekt@fbl.cz>2022-08-14 14:43:48 +0000
commit0e1fe03f4ba2b313d80c0a2d3c2ecfb7aee85a77 (patch)
tree24d34e0e927b104d4ab7b04385fec6ebb571ff85 /src
parentdee7b7d8212dbe94d5afd6bba736de4fcd1a05ac (diff)
downloadriscv-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.h1
-rw-r--r--src/target/armv4_5.c36
-rw-r--r--src/target/armv7m.c6
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
};