Skip to content

Commit

Permalink
stlink: fix stlink api2 single step
Browse files Browse the repository at this point in the history
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
  • Loading branch information
ntfreak committed May 14, 2012
1 parent 6167200 commit c102e44
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/jtag/drivers/stlink_usb.c
Expand Up @@ -872,8 +872,13 @@ static int stlink_usb_step(void *handle)

h = (struct stlink_usb_handle_s *)handle;

if (h->jtag_api == STLINK_JTAG_API_V2)
return stlink_usb_write_debug_reg(handle, DCB_DHCSR, DBGKEY|C_STEP|C_DEBUGEN);
if (h->jtag_api == STLINK_JTAG_API_V2) {
/* 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);

Expand Down

0 comments on commit c102e44

Please sign in to comment.