aboutsummaryrefslogtreecommitdiff
path: root/src/target
diff options
context:
space:
mode:
authorPaul Fertser <fercerpav@gmail.com>2015-12-30 10:43:32 +0300
committerAndreas Fritiofson <andreas.fritiofson@gmail.com>2015-12-30 11:06:32 +0000
commit32bb775c7a97dc28c571c9055bcb77f63cdcae6c (patch)
tree03e80cab959ff030035c80c6047068ea70d2e6d7 /src/target
parent5bee7f5b2c13b02f2d6ad98de6a826279777c8a9 (diff)
target: cortex_m: fix segfault with HLA
The HLA target shares an examine handler with cortex_m but since it lacks direct access to DAP, some operations need to be omitted. Change-Id: Ifdd9d3da4a3a3c2e1c9721284b21d041b3ccaa7a Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/3183 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Diffstat (limited to 'src/target')
-rw-r--r--src/target/cortex_m.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/target/cortex_m.c b/src/target/cortex_m.c
index d539a824..6786c46c 100644
--- a/src/target/cortex_m.c
+++ b/src/target/cortex_m.c
@@ -1891,25 +1891,25 @@ int cortex_m_examine(struct target *target)
struct adiv5_dap *swjdp = cortex_m->armv7m.arm.dap;
struct armv7m_common *armv7m = target_to_armv7m(target);
- retval = dap_dp_init(swjdp);
- if (retval != ERROR_OK) {
- LOG_ERROR("Could not initialize the debug port");
- return retval;
- }
-
- /* Search for the MEM-AP */
- retval = dap_find_ap(swjdp, AP_TYPE_AHB_AP, &armv7m->debug_ap);
- if (retval != ERROR_OK) {
- LOG_ERROR("Could not find MEM-AP to control the core");
- return retval;
- }
-
- /* Leave (only) generic DAP stuff for debugport_init(); */
- armv7m->debug_ap->memaccess_tck = 8;
-
/* stlink shares the examine handler but does not support
* all its calls */
if (!armv7m->stlink) {
+ retval = dap_dp_init(swjdp);
+ if (retval != ERROR_OK) {
+ LOG_ERROR("Could not initialize the debug port");
+ return retval;
+ }
+
+ /* Search for the MEM-AP */
+ retval = dap_find_ap(swjdp, AP_TYPE_AHB_AP, &armv7m->debug_ap);
+ if (retval != ERROR_OK) {
+ LOG_ERROR("Could not find MEM-AP to control the core");
+ return retval;
+ }
+
+ /* Leave (only) generic DAP stuff for debugport_init(); */
+ armv7m->debug_ap->memaccess_tck = 8;
+
retval = mem_ap_init(armv7m->debug_ap);
if (retval != ERROR_OK)
return retval;
@@ -1959,7 +1959,7 @@ int cortex_m_examine(struct target *target)
armv7m->arm.core_cache->num_regs = ARMV7M_NUM_CORE_REGS_NOFP;
}
- if (i == 4 || i == 3) {
+ if ((i == 4 || i == 3) && !armv7m->stlink) {
/* Cortex-M3/M4 has 4096 bytes autoincrement range */
armv7m->debug_ap->tar_autoincr_block = (1 << 12);
}