From 269aa8e99af515b95a27f46286988cfd69d967a5 Mon Sep 17 00:00:00 2001
From: ntfreak <ntfreak@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
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 8e8665bc4..3a567abae 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);
-- 
GitLab