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",

-- 

Reply via email to