- fix bug with emulated cortex_m3 dcc channel

git-svn-id: svn://svn.berlios.de/openocd/trunk@402 b42882b7-edfa-0310-969c-e2dbd0fdcd60
__archive__
ntfreak 2008-02-29 18:52:05 +00:00
parent 69749dbcb3
commit 269aa8e99a
1 changed files with 8 additions and 3 deletions

View File

@ -1372,8 +1372,12 @@ int cortex_m3_dcc_read(swjdp_common_t *swjdp, u8 *value, u8 *ctrl)
/* write ack back to software dcc register /* write ack back to software dcc register
* signify we have read data */ * signify we have read data */
dcrdr = 0; if (dcrdr & (1 << 0))
ahbap_write_buf_u16( swjdp, (u8*)&dcrdr, 1, DCB_DCRDR); {
dcrdr = 0;
ahbap_write_buf_u16( swjdp, (u8*)&dcrdr, 1, DCB_DCRDR);
}
return ERROR_OK; return ERROR_OK;
} }
@ -1413,10 +1417,11 @@ int cortex_m3_handle_target_request(void *priv)
cortex_m3_dcc_read(swjdp, &data, &ctrl); cortex_m3_dcc_read(swjdp, &data, &ctrl);
/* check if we have data */ /* check if we have data */
if (ctrl & (1<<0)) if (ctrl & (1 << 0))
{ {
u32 request; u32 request;
/* we assume target is quick enough */
request = data; request = data;
cortex_m3_dcc_read(swjdp, &data, &ctrl); cortex_m3_dcc_read(swjdp, &data, &ctrl);
request |= (data << 8); request |= (data << 8);