From 230f0e9dc64efd379866e632969966ce64b07f1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Tue, 13 Dec 2011 17:57:20 +0100 Subject: [PATCH] zy1000: fix crash in JTAG over TCP/IP MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit disable asynchronous callbacks and reads as minidriver requires reads and callbacks to be synchronous. Could possibly be fixed by some design work. Change-Id: I7ca79a551085b2e8ba6928e1762d1baed6e95d4b Signed-off-by: Øyvind Harboe Reviewed-on: http://openocd.zylin.com/260 Tested-by: jenkins Reviewed-by: Øyvind Harboe Tested-by: Øyvind Harboe --- src/jtag/zy1000/zy1000.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/jtag/zy1000/zy1000.c b/src/jtag/zy1000/zy1000.c index 7a3a0f2ea..25783fa79 100644 --- a/src/jtag/zy1000/zy1000.c +++ b/src/jtag/zy1000/zy1000.c @@ -1296,6 +1296,15 @@ void zy1000_jtag_add_callback4(jtag_callback_t callback, jtag_callback_data_t da callbackqueue[callbackqueue_pos].data2 = data2; callbackqueue[callbackqueue_pos].data3 = data3; callbackqueue_pos++; + + /* KLUDGE! + * make callbacks synchronous for now as minidriver requires callback + * to be synchronous. + * + * We can get away with making read and writes asynchronous so we + * don't completely kill performance. + */ + zy1000_flush_callbackqueue(); } static int zy1000_jtag_convert_to_callback4(jtag_callback_data_t data0, jtag_callback_data_t data1, jtag_callback_data_t data2, jtag_callback_data_t data3) @@ -1342,6 +1351,9 @@ static void writeShiftValue(uint8_t *data, int bits) readqueue[readqueue_pos].dest = data; readqueue[readqueue_pos].bits = bits; readqueue_pos++; + + /* KLUDGE!!! minidriver requires readqueue to be synchronous */ + zy1000_flush_readqueue(); } #else