diff options
author | David Brownell <dbrownell@users.sourceforge.net> | 2009-12-18 09:59:40 -0800 |
---|---|---|
committer | David Brownell <dbrownell@users.sourceforge.net> | 2009-12-18 09:59:40 -0800 |
commit | 7641934197abbd851127afcb0b7cebc30242f717 (patch) | |
tree | 807e0df122fdb41dc95bc089785ad5ccdef7cc15 /src | |
parent | 12b8c7b89b021c882e68bb0e28863c802fe36ac4 (diff) | |
download | openocd+libswd-7641934197abbd851127afcb0b7cebc30242f717.tar.gz openocd+libswd-7641934197abbd851127afcb0b7cebc30242f717.tar.bz2 openocd+libswd-7641934197abbd851127afcb0b7cebc30242f717.tar.xz openocd+libswd-7641934197abbd851127afcb0b7cebc30242f717.zip |
stellaris: fix min buffer length checks
Word count == size/4; cope. And increase buf_min so it's large
enough to cover the overhead in my tests.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/flash/nor/stellaris.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/src/flash/nor/stellaris.c b/src/flash/nor/stellaris.c index 51fe677c..f414ca6f 100644 --- a/src/flash/nor/stellaris.c +++ b/src/flash/nor/stellaris.c @@ -826,10 +826,10 @@ static int stellaris_write_block(struct flash_bank *bank, int retval = ERROR_OK; /* power of two, and multiple of word size */ - static const unsigned buf_min = 32; + static const unsigned buf_min = 128; /* for small buffers it's faster not to download an algorithm */ - if (wcount < buf_min) + if (wcount * 4 < buf_min) return ERROR_TARGET_RESOURCE_NOT_AVAILABLE; LOG_DEBUG("(bank=%p buffer=%p offset=%08" PRIx32 " wcount=%08" PRIx32 "", @@ -843,11 +843,8 @@ static int stellaris_write_block(struct flash_bank *bank, }; /* plus a buffer big enough for this data */ - if (wcount < buffer_size) { - buffer_size = wcount; - buffer_size += buf_min - 1; - buffer_size &= ~(buf_min - 1); - } + if (wcount * 4 < buffer_size) + buffer_size = wcount * 4; /* memory buffer */ while (target_alloc_working_area(target, buffer_size, &source) != ERROR_OK) |