diff options
author | Paul Fertser <fercerpav@gmail.com> | 2015-12-30 10:43:32 +0300 |
---|---|---|
committer | Andreas Fritiofson <andreas.fritiofson@gmail.com> | 2015-12-30 11:06:32 +0000 |
commit | 32bb775c7a97dc28c571c9055bcb77f63cdcae6c (patch) | |
tree | 03e80cab959ff030035c80c6047068ea70d2e6d7 /src/target/cortex_m.c | |
parent | 5bee7f5b2c13b02f2d6ad98de6a826279777c8a9 (diff) | |
download | riscv-openocd-32bb775c7a97dc28c571c9055bcb77f63cdcae6c.zip riscv-openocd-32bb775c7a97dc28c571c9055bcb77f63cdcae6c.tar.gz riscv-openocd-32bb775c7a97dc28c571c9055bcb77f63cdcae6c.tar.bz2 |
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/cortex_m.c')
-rw-r--r-- | src/target/cortex_m.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/target/cortex_m.c b/src/target/cortex_m.c index d539a82..6786c46 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); } |