diff --git a/libraries/wutdevoptab/devoptab_fs_read.c b/libraries/wutdevoptab/devoptab_fs_read.c index 1f66a657..405b456b 100644 --- a/libraries/wutdevoptab/devoptab_fs_read.c +++ b/libraries/wutdevoptab/devoptab_fs_read.c @@ -28,13 +28,13 @@ ssize_t __wut_fs_read(struct _reent *r, void *fd, char *ptr, size_t len) { uint8_t *tmp = (uint8_t *) ptr; size_t size = len - bytesRead; - if ((uintptr_t) ptr & 0x3F) { + if (size < 0x40) { + // read partial cache-line back-end + tmp = alignedBuffer; + } else if ((uintptr_t) ptr & 0x3F) { // read partial cache-line front-end tmp = alignedBuffer; size = MIN(size, 0x40 - ((uintptr_t) ptr & 0x3F)); - } else if (size < 0x40) { - // read partial cache-line back-end - tmp = alignedBuffer; } else { // read whole cache lines size &= ~0x3F; diff --git a/libraries/wutdevoptab/devoptab_fs_write.c b/libraries/wutdevoptab/devoptab_fs_write.c index f2cc747e..8fcd5f78 100644 --- a/libraries/wutdevoptab/devoptab_fs_write.c +++ b/libraries/wutdevoptab/devoptab_fs_write.c @@ -32,13 +32,13 @@ ssize_t __wut_fs_write(struct _reent *r, void *fd, const char *ptr, size_t len) uint8_t *tmp = (uint8_t *) ptr; size_t size = len - bytesWritten; - if ((uintptr_t) ptr & 0x3F) { + if (size < 0x40) { + // write partial cache-line back-end + tmp = alignedBuffer; + } else if ((uintptr_t) ptr & 0x3F) { // write partial cache-line front-end tmp = alignedBuffer; size = MIN(size, 0x40 - ((uintptr_t) ptr & 0x3F)); - } else if (size < 0x40) { - // write partial cache-line back-end - tmp = alignedBuffer; } else { // write whole cache lines size &= ~0x3F;