diff options
author | Antonio Borneo <borneo.antonio@gmail.com> | 2021-08-04 17:50:02 +0200 |
---|---|---|
committer | Antonio Borneo <borneo.antonio@gmail.com> | 2021-08-22 20:26:38 +0000 |
commit | 347b88a3e1997566dc44dae118de8252138833ff (patch) | |
tree | f20e946fe0db46e9b58516a68806da7834cbf4ab /src/target/cortex_a.c | |
parent | 7a61a006decf828f0f75e0602cc17d6efb897f57 (diff) | |
download | riscv-openocd-347b88a3e1997566dc44dae118de8252138833ff.zip riscv-openocd-347b88a3e1997566dc44dae118de8252138833ff.tar.gz riscv-openocd-347b88a3e1997566dc44dae118de8252138833ff.tar.bz2 |
cortex_a: use the ap number specified at target create
Current implementation ignores the flag '-ap-num' provided to
command 'target create' and searches for the first AP of APB type.
If specified, use the ap number.
Change-Id: If1ac12345220d14a4a60515efe46dc2a2eac079a
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6413
Tested-by: jenkins
Diffstat (limited to 'src/target/cortex_a.c')
-rw-r--r-- | src/target/cortex_a.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/target/cortex_a.c b/src/target/cortex_a.c index 8ef196e..b1f2206 100644 --- a/src/target/cortex_a.c +++ b/src/target/cortex_a.c @@ -2886,16 +2886,21 @@ static int cortex_a_examine_first(struct target *target) struct cortex_a_common *cortex_a = target_to_cortex_a(target); struct armv7a_common *armv7a = &cortex_a->armv7a_common; struct adiv5_dap *swjdp = armv7a->arm.dap; + struct adiv5_private_config *pc = target->private_config; int i; int retval = ERROR_OK; uint32_t didr, cpuid, dbg_osreg, dbg_idpfr1; - /* Search for the APB-AP - it is needed for access to debug registers */ - retval = dap_find_ap(swjdp, AP_TYPE_APB_AP, &armv7a->debug_ap); - if (retval != ERROR_OK) { - LOG_ERROR("Could not find APB-AP for debug access"); - return retval; + if (pc->ap_num == DP_APSEL_INVALID) { + /* Search for the APB-AP - it is needed for access to debug registers */ + retval = dap_find_ap(swjdp, AP_TYPE_APB_AP, &armv7a->debug_ap); + if (retval != ERROR_OK) { + LOG_ERROR("Could not find APB-AP for debug access"); + return retval; + } + } else { + armv7a->debug_ap = dap_ap(swjdp, pc->ap_num); } retval = mem_ap_init(armv7a->debug_ap); |