Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Crocker <dcrocker@eschertech.com>2020-12-16 19:08:16 +0300
committerDavid Crocker <dcrocker@eschertech.com>2020-12-16 19:08:16 +0300
commit95fcaa1d4264d7a11225b2450f8aee553c66f7d5 (patch)
tree42e0ab8dad2852b4882223e2947a9ea721de319d /src/Storage/FileWriteBuffer.h
parentb546702e73667a4ca9c42d7a8ef2b2c1b65ef29f (diff)
File write buffers moved to non-cached memory for SAME70
Diffstat (limited to 'src/Storage/FileWriteBuffer.h')
-rw-r--r--src/Storage/FileWriteBuffer.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/Storage/FileWriteBuffer.h b/src/Storage/FileWriteBuffer.h
index bd3804db..0708f042 100644
--- a/src/Storage/FileWriteBuffer.h
+++ b/src/Storage/FileWriteBuffer.h
@@ -32,13 +32,17 @@ const size_t FileWriteBufLen = 4096;
class FileWriteBuffer
{
public:
+#if SAME70
+ FileWriteBuffer(FileWriteBuffer *n, char *storage) noexcept : next(n), index(0), buf(storage) { }
+#else
FileWriteBuffer(FileWriteBuffer *n) noexcept : next(n), index(0) { }
+#endif
FileWriteBuffer *Next() const noexcept { return next; }
void SetNext(FileWriteBuffer *n) noexcept { next = n; }
- char *Data() noexcept { return reinterpret_cast<char *>(data32); }
- const char *Data() const noexcept { return reinterpret_cast<const char *>(data32); }
+ char *Data() noexcept { return buf; }
+ const char *Data() const noexcept { return buf; }
const size_t BytesStored() const noexcept { return index; }
const size_t BytesLeft() const noexcept { return FileWriteBufLen - index; }
@@ -50,13 +54,17 @@ private:
FileWriteBuffer *next;
size_t index;
- uint32_t data32[FileWriteBufLen / sizeof(uint32_t)]; // 32-bit aligned buffer for better HSMCI performance
+#if SAME70
+ char *buf;
+#else
+ alignas(4) char buf[FileWriteBufLen]; // 32-bit aligned buffer for better HSMCI performance
+#endif
};
inline size_t FileWriteBuffer::Store(const char *data, size_t length) noexcept
{
size_t bytesToStore = min<size_t>(BytesLeft(), length);
- memcpy(Data() + index, data, bytesToStore);
+ memcpy(buf + index, data, bytesToStore);
index += bytesToStore;
return bytesToStore;
}