From bfb02d5ba1238bb88cdf28863492cf1521ab2bab Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Mon, 30 Nov 2015 12:05:43 +0100 Subject: [PATCH] stm32l4x.c: Free r6/7 for 64-bit operations. Use r5 instead of r7. Change-Id: I350d00eeabe9446d64dba8f1dbffb5d4beab7dd6 Signed-off-by: Uwe Bonnes Reviewed-on: http://openocd.zylin.com/3138 Tested-by: jenkins Reviewed-by: Spencer Oliver --- contrib/loaders/flash/stm32l4x.S | 18 +++++++++--------- src/flash/nor/stm32l4x.c | 8 ++++---- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/contrib/loaders/flash/stm32l4x.S b/contrib/loaders/flash/stm32l4x.S index f58e09894e..587cc33a99 100644 --- a/contrib/loaders/flash/stm32l4x.S +++ b/contrib/loaders/flash/stm32l4x.S @@ -51,8 +51,8 @@ * r4 = flash base * * Clobbered: + * r5 - rp * r6 - temp - * r7 - rp * r8 - wp, tmp */ @@ -63,18 +63,18 @@ wait_fifo: ldr r8, [r0, #0] /* read wp */ cmp r8, #0 /* abort if wp == 0 */ beq exit - ldr r7, [r0, #4] /* read rp */ - subs r6, r8, r7 /* number of bytes available for read in r6*/ + 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 */ bcc wait_fifo ldr r6, STM32_PROG str r6, [r4, #STM32_FLASH_CR_OFFSET] - ldr r6, [r7], #0x04 /* read one word from src, increment ptr */ + ldr r6, [r5], #0x04 /* read one word from src, increment ptr */ str r6, [r2], #0x04 /* write one word to dst, increment ptr */ - ldr r6, [r7], #0x04 /* read one word from src, increment ptr */ + ldr r6, [r5], #0x04 /* read one word from src, increment ptr */ str r6, [r2], #0x04 /* write one word to dst, increment ptr */ - dsb + dsb busy: ldr r6, [r4, #STM32_FLASH_SR_OFFSET] tst r6, #0x10000 /* BSY (bit16) == 1 => operation in progress */ @@ -82,10 +82,10 @@ busy: tst r6, #0xfa /* PGSERR | PGPERR | PGAERR | WRPERR | PROGERR*/ bne error /* fail... */ - cmp r7, r1 /* wrap rp at end of buffer */ + cmp r5, r1 /* wrap rp at end of buffer */ it cs - addcs r7, r0, #8 /* skip loader args */ - str r7, [r0, #4] /* store rp */ + addcs r5, r0, #8 /* skip loader args */ + str r5, [r0, #4] /* store rp */ subs r3, r3, #1 /* decrement dword count */ cbz r3, exit /* loop if not done */ b wait_fifo diff --git a/src/flash/nor/stm32l4x.c b/src/flash/nor/stm32l4x.c index 549506c9b7..2c9a8bdf6f 100644 --- a/src/flash/nor/stm32l4x.c +++ b/src/flash/nor/stm32l4x.c @@ -463,12 +463,12 @@ static int stm32l4_write_block(struct flash_bank *bank, const uint8_t *buffer, */ static const uint8_t stm32l4_flash_write_code[] = { - 0xd0, 0xf8, 0x00, 0x80, 0xb8, 0xf1, 0x00, 0x0f, 0x22, 0xd0, 0x47, 0x68, - 0xb8, 0xeb, 0x07, 0x06, 0x07, 0x2e, 0xf5, 0xd3, 0xdf, 0xf8, 0x3c, 0x60, - 0x66, 0x61, 0x57, 0xf8, 0x04, 0x6b, 0x42, 0xf8, 0x04, 0x6b, 0x57, 0xf8, + 0xd0, 0xf8, 0x00, 0x80, 0xb8, 0xf1, 0x00, 0x0f, 0x22, 0xd0, 0x45, 0x68, + 0xb8, 0xeb, 0x05, 0x06, 0x07, 0x2e, 0xf5, 0xd3, 0xdf, 0xf8, 0x3c, 0x60, + 0x66, 0x61, 0x55, 0xf8, 0x04, 0x6b, 0x42, 0xf8, 0x04, 0x6b, 0x55, 0xf8, 0x04, 0x6b, 0x42, 0xf8, 0x04, 0x6b, 0xbf, 0xf3, 0x4f, 0x8f, 0x26, 0x69, 0x16, 0xf4, 0x80, 0x3f, 0xfb, 0xd1, 0x16, 0xf0, 0xfa, 0x0f, 0x07, 0xd1, - 0x8f, 0x42, 0x28, 0xbf, 0x00, 0xf1, 0x08, 0x07, 0x47, 0x60, 0x01, 0x3b, + 0x8d, 0x42, 0x28, 0xbf, 0x00, 0xf1, 0x08, 0x05, 0x45, 0x60, 0x01, 0x3b, 0x13, 0xb1, 0xd9, 0xe7, 0x00, 0x21, 0x41, 0x60, 0x30, 0x46, 0x00, 0xbe, 0x01, 0x00, 0x00, 0x00 }; -- 2.30.2