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/+/9264

-- gerrit

commit 5a04b064ed6566f52a349a4c9465631f2ac7c398
Author: Daniel Goehring <[email protected]>
Date:   Mon Jul 14 19:29:24 2025 -0600

    target/arm: add nested AP Cortex M target support
    
    For the Cortex M processor target, add nested AP support.
    
    Change-Id: I624e3c0dfa899968ebca06b3b0d0d963fc0f9828
    Signed-off-by: Daniel Goehring <[email protected]>

diff --git a/src/target/cortex_m.c b/src/target/cortex_m.c
index 9f0b6284b0..a01ce2a3ee 100644
--- a/src/target/cortex_m.c
+++ b/src/target/cortex_m.c
@@ -2775,7 +2775,11 @@ int cortex_m_examine(struct target *target)
                                        return retval;
                                }
                        } else {
-                               armv7m->debug_ap = dap_get_ap(swjdp, 
cortex_m->apsel);
+                               if (cortex_m->apsel_gateway == DP_APSEL_INVALID)
+                                       armv7m->debug_ap = dap_get_ap(swjdp, 
cortex_m->apsel);
+                               else
+                                       armv7m->debug_ap = 
dap_get_ap_gateway(swjdp, cortex_m->apsel, cortex_m->apsel_gateway);
+
                                if (!armv7m->debug_ap) {
                                        LOG_TARGET_ERROR(target, "Cannot get 
AP");
                                        return ERROR_FAIL;
@@ -3147,6 +3151,7 @@ static int cortex_m_target_create(struct target *target)
 
        cortex_m->common_magic = CORTEX_M_COMMON_MAGIC;
        cortex_m->apsel = pc->ap_num;
+       cortex_m->apsel_gateway = pc->ap_num_gateway;
 
        cortex_m_init_arch_info(target, cortex_m, pc->dap);
 
diff --git a/src/target/cortex_m.h b/src/target/cortex_m.h
index 615369f344..1588ddee00 100644
--- a/src/target/cortex_m.h
+++ b/src/target/cortex_m.h
@@ -304,6 +304,7 @@ struct cortex_m_common {
        bool slow_register_read;        /* A register has not been ready, poll 
S_REGRDY */
 
        uint64_t apsel;
+       uint64_t apsel_gateway;
 
        /* Whether this target has the erratum that makes C_MASKINTS not apply 
to
         * already pending interrupts */

-- 

Reply via email to