This is an automated email from Gerrit. "Daniel Goehring <[email protected]>" just uploaded a new patch set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/9258
-- gerrit commit 19e30fd8e9e5e3d8988c89cf28159a6af74787fe Author: Daniel Goehring <[email protected]> Date: Mon Jul 14 21:05:02 2025 -0600 target/arm: add nested AP DAP 'baseaddr' cmd support Add nested AP support to the DAP 'baseaddr' command. Change-Id: If242e93bf4f6405acab37cbf7256435bc6f0070c Signed-off-by: Daniel Goehring <[email protected]> diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c index 995f0db1df..cb4a917136 100644 --- a/src/target/arm_adi_v5.c +++ b/src/target/arm_adi_v5.c @@ -2708,9 +2708,10 @@ COMMAND_HANDLER(handle_dap_info_command) COMMAND_HANDLER(dap_baseaddr_command) { struct adiv5_dap *dap = adiv5_get_dap(CMD_DATA); + struct adiv5_ap *ap; uint64_t apsel; + uint64_t apsel_gateway = DP_APSEL_INVALID; uint32_t baseaddr_lower, baseaddr_upper; - struct adiv5_ap *ap; target_addr_t baseaddr; int retval; @@ -2719,6 +2720,7 @@ COMMAND_HANDLER(dap_baseaddr_command) switch (CMD_ARGC) { case 0: apsel = dap->apsel; + apsel_gateway = dap->apsel_gateway; break; case 1: COMMAND_PARSE_NUMBER(u64, CMD_ARGV[0], apsel); @@ -2727,6 +2729,18 @@ COMMAND_HANDLER(dap_baseaddr_command) return ERROR_COMMAND_ARGUMENT_INVALID; } break; + case 2: + COMMAND_PARSE_NUMBER(u64, CMD_ARGV[0], apsel); + if (!is_ap_num_valid(dap, apsel)) { + command_print(CMD, "Invalid AP number"); + return ERROR_COMMAND_ARGUMENT_INVALID; + } + COMMAND_PARSE_NUMBER(u64, CMD_ARGV[1], apsel_gateway); + if (!is_ap_num_valid(dap, apsel_gateway)) { + command_print(CMD, "Invalid AP_GATEWAY number"); + return ERROR_COMMAND_ARGUMENT_INVALID; + } + break; default: return ERROR_COMMAND_SYNTAX_ERROR; } @@ -2737,7 +2751,11 @@ COMMAND_HANDLER(dap_baseaddr_command) * use the ID register to verify it's a MEM-AP. */ - ap = dap_get_ap(dap, apsel); + if (apsel_gateway == DP_APSEL_INVALID) + ap = dap_get_ap(dap, apsel); + else + ap = dap_get_ap_gateway(dap, apsel, apsel_gateway); + if (!ap) { command_print(CMD, "Cannot get AP"); return ERROR_FAIL; @@ -3275,7 +3293,7 @@ const struct command_registration dap_instance_commands[] = { .mode = COMMAND_EXEC, .help = "return debug base address from MEM-AP " "(default currently selected AP)", - .usage = "[ap_num]", + .usage = "[ap_num [ap_num_gateway]]", }, { .name = "memaccess", --
