From 934ed07b0d05448a553d19daa14ad6196fc0c0fe Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Mon, 30 Nov 2015 12:21:12 +0100 Subject: stm32l4x.c: Correct waiting for data. Old code waited only for 7 bytes and didn't handle buffer wrap-around, but was functional despite. Change-Id: Iceaf7be1e51368b2ec0a8722cc9ac16d12f9aa63 Signed-off-by: Uwe Bonnes Reviewed-on: http://openocd.zylin.com/3140 Tested-by: jenkins Reviewed-by: Spencer Oliver --- contrib/loaders/flash/stm32l4x.S | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'contrib') diff --git a/contrib/loaders/flash/stm32l4x.S b/contrib/loaders/flash/stm32l4x.S index 045f9d0..799dec5 100644 --- a/contrib/loaders/flash/stm32l4x.S +++ b/contrib/loaders/flash/stm32l4x.S @@ -65,7 +65,10 @@ wait_fifo: beq exit ldr r5, [r0, #4] /* read rp */ subs r6, r8, r5 /* number of bytes available for read in r6*/ - cmp r6, #7 /* wait until 8 bytes are available */ + itt mi /* if wrapped around*/ + addmi r6, r1 /* add size of buffer */ + submi r6, r0 + cmp r6, #8 /* wait until 8 bytes are available */ bcc wait_fifo ldr r6, STM32_PROG -- cgit v1.1