stlink: fix stlink api2 single step
This makes the newer v2 api behave as per the v1 api, eg. single stepping masks all interrupts. A better long term solution is to use same behaviour as a cortex-m3 target, see CORTEX_M3_ISRMASK_AUTO. Change-Id: Iaf9f9adf225cf274faaac938050bb996582aa98f Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk> Reviewed-on: http://openocd.zylin.com/621 Tested-by: jenkins
This commit is contained in:
parent
61672009c4
commit
c102e448c3
|
@ -872,8 +872,13 @@ static int stlink_usb_step(void *handle)
|
||||||
|
|
||||||
h = (struct stlink_usb_handle_s *)handle;
|
h = (struct stlink_usb_handle_s *)handle;
|
||||||
|
|
||||||
if (h->jtag_api == STLINK_JTAG_API_V2)
|
if (h->jtag_api == STLINK_JTAG_API_V2) {
|
||||||
return stlink_usb_write_debug_reg(handle, DCB_DHCSR, DBGKEY|C_STEP|C_DEBUGEN);
|
/* TODO: this emulates the v1 api, it should really use a similar auto mask isr
|
||||||
|
* that the cortex-m3 currently does. */
|
||||||
|
stlink_usb_write_debug_reg(handle, DCB_DHCSR, DBGKEY|C_HALT|C_MASKINTS|C_DEBUGEN);
|
||||||
|
stlink_usb_write_debug_reg(handle, DCB_DHCSR, DBGKEY|C_STEP|C_MASKINTS|C_DEBUGEN);
|
||||||
|
return stlink_usb_write_debug_reg(handle, DCB_DHCSR, DBGKEY|C_HALT|C_DEBUGEN);
|
||||||
|
}
|
||||||
|
|
||||||
stlink_usb_init_buffer(handle, STLINK_RX_EP, 2);
|
stlink_usb_init_buffer(handle, STLINK_RX_EP, 2);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue