From 269aa8e99af515b95a27f46286988cfd69d967a5 Mon Sep 17 00:00:00 2001 From: ntfreak Date: Fri, 29 Feb 2008 18:52:05 +0000 Subject: [PATCH] - fix bug with emulated cortex_m3 dcc channel git-svn-id: svn://svn.berlios.de/openocd/trunk@402 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/target/cortex_m3.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/target/cortex_m3.c b/src/target/cortex_m3.c index 8e8665bc44..3a567abae4 100644 --- a/src/target/cortex_m3.c +++ b/src/target/cortex_m3.c @@ -1372,8 +1372,12 @@ int cortex_m3_dcc_read(swjdp_common_t *swjdp, u8 *value, u8 *ctrl) /* write ack back to software dcc register * signify we have read data */ - dcrdr = 0; - ahbap_write_buf_u16( swjdp, (u8*)&dcrdr, 1, DCB_DCRDR); + if (dcrdr & (1 << 0)) + { + dcrdr = 0; + ahbap_write_buf_u16( swjdp, (u8*)&dcrdr, 1, DCB_DCRDR); + } + return ERROR_OK; } @@ -1413,10 +1417,11 @@ int cortex_m3_handle_target_request(void *priv) cortex_m3_dcc_read(swjdp, &data, &ctrl); /* check if we have data */ - if (ctrl & (1<<0)) + if (ctrl & (1 << 0)) { u32 request; + /* we assume target is quick enough */ request = data; cortex_m3_dcc_read(swjdp, &data, &ctrl); request |= (data << 8); -- 2.30.2