From e4df1ff09dbf2f53accb9f93eacc4c9db15a4c6f Mon Sep 17 00:00:00 2001
From: Giovanni Di Sirio <gdisirio@gmail.com>
Date: Thu, 27 Aug 2015 11:43:17 +0000
Subject: Improved M7 cache handling.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@8246 35acf78f-673a-0410-8e92-d51de3d6d3f4
---
 testhal/STM32/STM32F7xx/GPT-ADC/main.c | 6 ++++--
 testhal/STM32/STM32F7xx/SPI/main.c     | 8 ++++----
 2 files changed, 8 insertions(+), 6 deletions(-)

(limited to 'testhal')

diff --git a/testhal/STM32/STM32F7xx/GPT-ADC/main.c b/testhal/STM32/STM32F7xx/GPT-ADC/main.c
index 4e1b27520..d0e810201 100644
--- a/testhal/STM32/STM32F7xx/GPT-ADC/main.c
+++ b/testhal/STM32/STM32F7xx/GPT-ADC/main.c
@@ -52,8 +52,10 @@ static adcsample_t samples1[ADC_GRP1_NUM_CHANNELS * ADC_GRP1_BUF_DEPTH];
 size_t nx = 0, ny = 0;
 static void adccallback(ADCDriver *adcp, adcsample_t *buffer, size_t n) {
 
-  /* DMA buffer invalidation because data cache.*/
-  dmaBufferInvalidate(buffer, buffer + (n * adcp->grpp->num_channels));
+  /* DMA buffer invalidation because data cache, only invalidating the
+     half buffer just filled.*/
+  dmaBufferInvalidate(buffer,
+                      n * adcp->grpp->num_channels * sizeof (adcsample_t));
 
   /* Updating counters.*/
   if (samples1 == buffer) {
diff --git a/testhal/STM32/STM32F7xx/SPI/main.c b/testhal/STM32/STM32F7xx/SPI/main.c
index cd7b3ed07..bfed6c07c 100644
--- a/testhal/STM32/STM32F7xx/SPI/main.c
+++ b/testhal/STM32/STM32F7xx/SPI/main.c
@@ -87,7 +87,7 @@ static THD_FUNCTION(spi_thread_1, p) {
     /* Preparing data buffer and flushing cache.*/
     for (i = 0; i < SPI_BUFFERS_SIZE; i++)
       txbuf[i] = (uint8_t)i;
-    dmaBufferFlush(txbuf, txbuf + SPI_BUFFERS_SIZE);
+    dmaBufferFlush(txbuf, SPI_BUFFERS_SIZE);
 
     /* Slave selection and data exchange.*/
     spiSelect(&SPID2);
@@ -97,7 +97,7 @@ static THD_FUNCTION(spi_thread_1, p) {
 #if defined(SPI_LOOPBACK)
     /* Invalidating cache over the buffer then checking the
        loopback result.*/
-    dmaBufferInvalidate(rxbuf, rxbuf + SPI_BUFFERS_SIZE);
+    dmaBufferInvalidate(rxbuf, SPI_BUFFERS_SIZE);
     if (memcmp(txbuf, rxbuf, SPI_BUFFERS_SIZE) != 0)
       chSysHalt("loopback failure");
 #endif
@@ -125,7 +125,7 @@ static THD_FUNCTION(spi_thread_2, p) {
     /* Preparing data buffer and flushing cache.*/
     for (i = 0; i < SPI_BUFFERS_SIZE; i++)
       txbuf[i] = (uint8_t)(128U + i);
-    dmaBufferFlush(txbuf, txbuf + SPI_BUFFERS_SIZE);
+    dmaBufferFlush(txbuf, SPI_BUFFERS_SIZE);
 
     /* Slave selection and data exchange.*/
     spiSelect(&SPID2);
@@ -135,7 +135,7 @@ static THD_FUNCTION(spi_thread_2, p) {
 #if defined(SPI_LOOPBACK)
     /* Invalidating cache over the buffer then checking the
        loopback result.*/
-    dmaBufferInvalidate(rxbuf, rxbuf + SPI_BUFFERS_SIZE);
+    dmaBufferInvalidate(rxbuf, SPI_BUFFERS_SIZE);
     if (memcmp(txbuf, rxbuf, SPI_BUFFERS_SIZE) != 0)
       chSysHalt("loopback failure");
 #endif
-- 
cgit v1.2.3