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/+/9255
-- gerrit commit 0178ab8d293b340f38740b0a60c1f859c4da3dad Author: Daniel Goehring <[email protected]> Date: Mon Jul 14 20:41:13 2025 -0600 target/arm: add nested AP DAP 'apcsw' cmd support Add nested AP support to the DAP 'apcsw' command. Change-Id: I1e4ac9807421b1a57a3b99e5839051eecac47a88 Signed-off-by: Daniel Goehring <[email protected]> diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c index b99c67ee5c..adf43bd1aa 100644 --- a/src/target/arm_adi_v5.c +++ b/src/target/arm_adi_v5.c @@ -2836,13 +2836,22 @@ COMMAND_HANDLER(dap_apcsw_command) switch (CMD_ARGC) { case 0: - ap = dap_get_ap(dap, dap->apsel); + if (dap->apsel_gateway == DP_APSEL_INVALID) + ap = dap_get_ap(dap, dap->apsel); + else + ap = dap_get_ap_gateway(dap, dap->apsel, dap->apsel_gateway); + if (!ap) { command_print(CMD, "Cannot get AP"); return ERROR_FAIL; } - command_print(CMD, "AP#0x%" PRIx64 " selected, csw 0x%8.8" PRIx32, - dap->apsel, ap->csw_default); + + if (dap->apsel_gateway == DP_APSEL_INVALID) + command_print(CMD, "AP#0x%" PRIx64 " selected, csw 0x%8.8" PRIx32, + dap->apsel, ap->csw_default); + else + command_print(CMD, "AP#0x%" PRIx64 " GW#0x%" PRIx64 " selected, csw 0x%8.8" PRIx32, + dap->apsel, dap->apsel_gateway, ap->csw_default); break; case 1: if (strcmp(CMD_ARGV[0], "default") == 0) @@ -2854,7 +2863,11 @@ COMMAND_HANDLER(dap_apcsw_command) LOG_ERROR("CSW value cannot include 'Size' and 'AddrInc' bit-fields"); return ERROR_COMMAND_ARGUMENT_INVALID; } - ap = dap_get_config_ap(dap, dap->apsel); + if (dap->apsel_gateway == DP_APSEL_INVALID) + ap = dap_get_config_ap(dap, dap->apsel); + else + ap = dap_get_config_ap_gateway(dap, dap->apsel, dap->apsel_gateway); + if (!ap) { command_print(CMD, "Cannot get AP"); return ERROR_FAIL; @@ -2868,7 +2881,11 @@ COMMAND_HANDLER(dap_apcsw_command) LOG_ERROR("CSW mask cannot include 'Size' and 'AddrInc' bit-fields"); return ERROR_COMMAND_ARGUMENT_INVALID; } - ap = dap_get_config_ap(dap, dap->apsel); + if (dap->apsel_gateway == DP_APSEL_INVALID) + ap = dap_get_config_ap(dap, dap->apsel); + else + ap = dap_get_config_ap_gateway(dap, dap->apsel, dap->apsel_gateway); + if (!ap) { command_print(CMD, "Cannot get AP"); return ERROR_FAIL; --
