aboutsummaryrefslogtreecommitdiff
path: root/src/target/cortex_a.c
diff options
context:
space:
mode:
authorAntonio Borneo <borneo.antonio@gmail.com>2021-08-04 17:50:02 +0200
committerAntonio Borneo <borneo.antonio@gmail.com>2021-08-22 20:26:38 +0000
commit347b88a3e1997566dc44dae118de8252138833ff (patch)
treef20e946fe0db46e9b58516a68806da7834cbf4ab /src/target/cortex_a.c
parent7a61a006decf828f0f75e0602cc17d6efb897f57 (diff)
downloadriscv-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.c15
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);