target/cortex_m: restore C_MASKINTS after reset
The cortex_m maskisr user-facing setting is not changed across a target reset. However, the in-core C_MASKINTS bit was always cleared as part of reset processing, meaning that a cortex_m maskisr on setting would not be respected after a reset. Set C_MASKINTS based on the user-facing setting value rather than always clearing it after reset. Change-Id: I5aa5b9dfde04a0fb9c6816fa55b5ef1faf39f8de Signed-off-by: Christopher Head <chead@zaber.com> Reviewed-on: http://openocd.zylin.com/4605 Tested-by: jenkins Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
parent
45f0c15912
commit
c6cc60e0e1
|
@ -237,8 +237,11 @@ static int cortex_m_endreset_event(struct target *target)
|
|||
return retval;
|
||||
}
|
||||
|
||||
/* clear any interrupt masking */
|
||||
cortex_m_write_debug_halt_mask(target, 0, C_MASKINTS);
|
||||
/* Restore proper interrupt masking setting. */
|
||||
if (cortex_m->isrmasking_mode == CORTEX_M_ISRMASK_ON)
|
||||
cortex_m_write_debug_halt_mask(target, C_MASKINTS, 0);
|
||||
else
|
||||
cortex_m_write_debug_halt_mask(target, 0, C_MASKINTS);
|
||||
|
||||
/* Enable features controlled by ITM and DWT blocks, and catch only
|
||||
* the vectors we were told to pay attention to.
|
||||
|
|
Loading…
Reference in New Issue