diff --git a/applications/message_process/include/message_process.hpp b/applications/message_process/include/message_process.hpp
index b3c1bdd..602c2a4 100644
--- a/applications/message_process/include/message_process.hpp
+++ b/applications/message_process/include/message_process.hpp
@@ -78,6 +78,11 @@
     }
 
 private:
+    void cleanHeader() const;
+    void cleanHeaderData() const;
+    void invalidateHeader() const;
+    void invalidateHeaderData() const;
+
     ethosu_core_queue &queue;
 };
 
diff --git a/applications/message_process/src/message_process.cc b/applications/message_process/src/message_process.cc
index 5640a1a..200d92b 100644
--- a/applications/message_process/src/message_process.cc
+++ b/applications/message_process/src/message_process.cc
@@ -54,6 +54,8 @@
     const uint8_t *end = dst + length;
     uint32_t rpos      = queue.header.read;
 
+    invalidateHeaderData();
+
     if (length > available()) {
         return false;
     }
@@ -65,9 +67,7 @@
 
     queue.header.read = rpos;
 
-#if defined(__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
-    SCB_CleanDCache();
-#endif
+    cleanHeader();
 
     return true;
 }
@@ -79,6 +79,8 @@
         total += vec[i].length;
     }
 
+    invalidateHeader();
+
     if (total > capacity()) {
         return false;
     }
@@ -98,9 +100,7 @@
     // Update the write position last
     queue.header.write = wpos;
 
-#if defined(__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
-    SCB_CleanDCache();
-#endif
+    cleanHeaderData();
 
     return true;
 }
@@ -115,19 +115,45 @@
 bool QueueImpl::skip(uint32_t length) {
     uint32_t rpos = queue.header.read;
 
+    invalidateHeader();
+
     if (length > available()) {
         return false;
     }
 
     queue.header.read = (rpos + length) % queue.header.size;
 
-#if defined(__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
-    SCB_CleanDCache();
-#endif
+    cleanHeader();
 
     return true;
 }
 
+void QueueImpl::cleanHeader() const {
+#if defined(__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
+    SCB_CleanDCache_by_Addr(reinterpret_cast<uint32_t *>(&queue.header), sizeof(queue.header));
+#endif
+}
+
+void QueueImpl::cleanHeaderData() const {
+#if defined(__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
+    SCB_CleanDCache_by_Addr(reinterpret_cast<uint32_t *>(&queue.header), sizeof(queue.header));
+    SCB_CleanDCache_by_Addr(reinterpret_cast<uint32_t *>(queue.data), queue.header.size);
+#endif
+}
+
+void QueueImpl::invalidateHeader() const {
+#if defined(__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
+    SCB_InvalidateDCache_by_Addr(reinterpret_cast<uint32_t *>(&queue.header), sizeof(queue.header));
+#endif
+}
+
+void QueueImpl::invalidateHeaderData() const {
+#if defined(__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
+    SCB_InvalidateDCache_by_Addr(reinterpret_cast<uint32_t *>(&queue.header), sizeof(queue.header));
+    SCB_InvalidateDCache_by_Addr(reinterpret_cast<uint32_t *>(queue.data), queue.header.size);
+#endif
+}
+
 MessageProcess::MessageProcess(ethosu_core_queue &in,
                                ethosu_core_queue &out,
                                Mailbox::Mailbox &mbox,
@@ -155,10 +181,6 @@
 bool MessageProcess::handleMessage() {
     ethosu_core_msg msg;
 
-#if defined(__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
-    SCB_InvalidateDCache();
-#endif
-
     // Read msg header
     if (!queueIn.read(msg)) {
         return false;
