Skip to content

Commit

Permalink
cortex_m: set C_DEBUGEN in soft_reset_halt
Browse files Browse the repository at this point in the history
The command "soft_reset_halt" is deprecated since mid 2013 with
the commit 146dfe3 ("cortex_m: deprecate soft_reset_halt").
Nevertheless it is still extremely useful with multicore chips
where it allows to reset only one of the cores, option not
available through asserting the chip-wide srst.
Without a better replacement of the command, it's worth fixing it.

Accordingly to ARM DDI 0403E.d, chapter C1.4.1 "Entering Debug
state on leaving reset state", to halt the core at reset both bits
DHCSR.C_DEBUGEN and DEMCR.VC_CORERESET must be set.
Current code only sets the latter bit, relying on having C_DEBUGEN
already set through other commands, e.g. "halt". This prevents the
command "soft_reset_halt" to work if issued as very first command.

Set the bit C_DEBUGEN in command "soft_reset_halt".

Change-Id: I66bfd6a0da1fca5049dea037b4d258cf6f842966
Signed-off-by: Antonio Borneo <[email protected]>
Reviewed-on: http:https://openocd.zylin.com/4987
Tested-by: jenkins
Reviewed-by: Tarek BOCHKATI <[email protected]>
Reviewed-by: Tomas Vanek <[email protected]>
  • Loading branch information
borneoa authored and tom-van committed Jun 20, 2019
1 parent a521d93 commit 6ea4372
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/target/cortex_m.c
Original file line number Diff line number Diff line change
Expand Up @@ -716,6 +716,11 @@ static int cortex_m_soft_reset_halt(struct target *target)
* core, not the peripherals */
LOG_WARNING("soft_reset_halt is deprecated, please use 'reset halt' instead.");

/* Set C_DEBUGEN */
retval = cortex_m_write_debug_halt_mask(target, 0, C_STEP | C_MASKINTS);
if (retval != ERROR_OK)
return retval;

/* Enter debug state on reset; restore DEMCR in endreset_event() */
retval = mem_ap_write_u32(armv7m->debug_ap, DCB_DEMCR,
TRCENA | VC_HARDERR | VC_BUSERR | VC_CORERESET);
Expand Down

0 comments on commit 6ea4372

Please sign in to comment.