Commit afe95871 authored by Mathias K's avatar Mathias K Committed by Spencer Oliver
Browse files

optimize: replace while loop by memcpy



There is no need to use a while loop here. This patch simple copy
the last bytes with the system function.

Change-Id: Ibda72dca449746efeba5a1af2e45c5990f9cf347
Signed-off-by: default avatarMathias K <kesmtp@freenet.de>
Reviewed-on: http://openocd.zylin.com/364


Tested-by: jenkins
Reviewed-by: default avatarØyvind Harboe <oyvindharboe@gmail.com>
Reviewed-by: default avatarSpencer Oliver <spen@spen-soft.co.uk>
parent 5f83378a
...@@ -1214,14 +1214,9 @@ static int stellaris_write(struct flash_bank *bank, uint8_t *buffer, uint32_t of ...@@ -1214,14 +1214,9 @@ static int stellaris_write(struct flash_bank *bank, uint8_t *buffer, uint32_t of
if (bytes_remaining) if (bytes_remaining)
{ {
uint8_t last_word[4] = {0xff, 0xff, 0xff, 0xff}; uint8_t last_word[4] = {0xff, 0xff, 0xff, 0xff};
int i = 0;
while (bytes_remaining > 0) /* copy the last remaining bytes into the write buffer */
{ memcpy(last_word, buffer+bytes_written, bytes_remaining);
last_word[i++] = *(buffer + bytes_written);
bytes_remaining--;
bytes_written++;
}
if (!(address & 0xff)) if (!(address & 0xff))
LOG_DEBUG("0x%" PRIx32 "", address); LOG_DEBUG("0x%" PRIx32 "", address);
......
...@@ -464,17 +464,12 @@ static int stm32lx_write(struct flash_bank *bank, uint8_t *buffer, ...@@ -464,17 +464,12 @@ static int stm32lx_write(struct flash_bank *bank, uint8_t *buffer,
if (bytes_remaining) if (bytes_remaining)
{ {
uint32_t value = 0; uint8_t last_word[4] = {0xff, 0xff, 0xff, 0xff};
for (int i = 0; i < 4; i++)
{
if (bytes_remaining)
{
value += (buffer[i] << (8 * i));
bytes_remaining--;
}
}
retval = target_write_u32(target, address, value); /* copy the last remaining bytes into the write buffer */
memcpy(last_word, buffer+bytes_written, bytes_remaining);
retval = target_write_buffer(target, address, 4, last_word);
if (retval != ERROR_OK) if (retval != ERROR_OK)
return retval; return retval;
......
...@@ -707,14 +707,9 @@ static int str7x_write(struct flash_bank *bank, uint8_t *buffer, ...@@ -707,14 +707,9 @@ static int str7x_write(struct flash_bank *bank, uint8_t *buffer,
if (bytes_remaining) if (bytes_remaining)
{ {
uint8_t last_dword[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; uint8_t last_dword[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
i = 0;
while (bytes_remaining > 0) /* copy the last remaining bytes into the write buffer */
{ memcpy(last_dword, buffer+bytes_written, bytes_remaining);
last_dword[i++] = *(buffer + bytes_written);
bytes_remaining--;
bytes_written++;
}
/* command */ /* command */
cmd = FLASH_DWPG; cmd = FLASH_DWPG;
......
...@@ -618,14 +618,9 @@ static int str9x_write(struct flash_bank *bank, ...@@ -618,14 +618,9 @@ static int str9x_write(struct flash_bank *bank,
if (bytes_remaining) if (bytes_remaining)
{ {
uint8_t last_halfword[2] = {0xff, 0xff}; uint8_t last_halfword[2] = {0xff, 0xff};
i = 0;
while (bytes_remaining > 0) /* copy the last remaining bytes into the write buffer */
{ memcpy(last_halfword, buffer+bytes_written, bytes_remaining);
last_halfword[i++] = *(buffer + bytes_written);
bytes_remaining--;
bytes_written++;
}
bank_adr = address & ~0x03; bank_adr = address & ~0x03;
......
...@@ -714,14 +714,9 @@ static int str9xpec_write(struct flash_bank *bank, uint8_t *buffer, ...@@ -714,14 +714,9 @@ static int str9xpec_write(struct flash_bank *bank, uint8_t *buffer,
if (bytes_remaining) if (bytes_remaining)
{ {
uint8_t last_dword[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; uint8_t last_dword[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
i = 0;
while (bytes_remaining > 0) /* copy the last remaining bytes into the write buffer */
{ memcpy(last_dword, buffer+bytes_written, bytes_remaining);
last_dword[i++] = *(buffer + bytes_written);
bytes_remaining--;
bytes_written++;
}
str9xpec_set_instr(tap, ISC_PROGRAM, TAP_IRPAUSE); str9xpec_set_instr(tap, ISC_PROGRAM, TAP_IRPAUSE);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment