|
|
@@ -54,6 +54,7 @@ |
|
|
|
#include "target_type.h" |
|
|
|
#include "arm_opcodes.h" |
|
|
|
#include "arm_semihosting.h" |
|
|
|
#include "jtag/swd.h" |
|
|
|
#include <helper/time_support.h> |
|
|
|
|
|
|
|
static int cortex_a_poll(struct target *target); |
|
|
@@ -1867,9 +1868,15 @@ static int cortex_a_assert_reset(struct target *target) |
|
|
|
/* REVISIT handle "pulls" cases, if there's |
|
|
|
* hardware that needs them to work. |
|
|
|
*/ |
|
|
|
if (target->reset_halt) |
|
|
|
if (jtag_get_reset_config() & RESET_SRST_NO_GATING) |
|
|
|
jtag_add_reset(0, 1); |
|
|
|
|
|
|
|
/* |
|
|
|
* FIXME: fix reset when transport is SWD. This is a temporary |
|
|
|
* work-around for release v0.10 that is not intended to stay! |
|
|
|
*/ |
|
|
|
if (transport_is_swd() || |
|
|
|
(target->reset_halt && (jtag_get_reset_config() & RESET_SRST_NO_GATING))) |
|
|
|
jtag_add_reset(0, 1); |
|
|
|
|
|
|
|
} else { |
|
|
|
LOG_ERROR("%s: how to reset?", target_name(target)); |
|
|
|
return ERROR_FAIL; |
|
|
|