The logic here is that a write-through cache will have written back the lines in vdata, whereas a write-back cache won't since there are no cache conflicts before the invalidation. Did you run this test on a write-through target to verify it works as expected?
On Wed, Feb 26, 2014 at 10:52 AM, Sebastian Huber <sebastian.hu...@embedded-brains.de> wrote: > --- > testsuites/sptests/spcache01/init.c | 17 ++++++++++++++--- > testsuites/sptests/spcache01/spcache01.scn | 1 + > 2 files changed, 15 insertions(+), 3 deletions(-) > > diff --git a/testsuites/sptests/spcache01/init.c > b/testsuites/sptests/spcache01/init.c > index 9f27a79..d9eb053 100644 > --- a/testsuites/sptests/spcache01/init.c > +++ b/testsuites/sptests/spcache01/init.c > @@ -44,6 +44,7 @@ static void test_data_flush_and_invalidate(void) > int n = 32; > int i; > size_t data_size = n * sizeof(data[0]); > + bool write_through; > > printf("data cache flush and invalidate test\n"); > > @@ -65,8 +66,15 @@ static void test_data_flush_and_invalidate(void) > > rtems_cache_invalidate_multiple_data_lines(&data[0], data_size); > > - for (i = 0; i < n; ++i) { > - rtems_test_assert(vdata[i] == i); > + write_through = vdata[0] == ~0; > + if (write_through) { > + for (i = 0; i < n; ++i) { > + rtems_test_assert(vdata[i] == ~i); > + } > + } else { > + for (i = 0; i < n; ++i) { > + rtems_test_assert(vdata[i] == i); > + } > } > > for (i = 0; i < n; ++i) { > @@ -82,7 +90,10 @@ static void test_data_flush_and_invalidate(void) > > rtems_interrupt_lock_release(&lock, level); > > - printf("data cache operations by line passed the test\n"); > + printf( > + "data cache operations by line passed the test (%s cache detected)\n", > + write_through ? "write-through" : "copy-back" > + ); > } else { > printf( > "skip data cache flush and invalidate test" > diff --git a/testsuites/sptests/spcache01/spcache01.scn > b/testsuites/sptests/spcache01/spcache01.scn > index 45ea3e5..c2f1eb6 100644 > --- a/testsuites/sptests/spcache01/spcache01.scn > +++ b/testsuites/sptests/spcache01/spcache01.scn > @@ -1,6 +1,7 @@ > *** TEST SPCACHE 1 *** > data cache flush and invalidate test > data cache operations by line passed the test > +data cache operations by line passed the test (copy-back cache detected) > data cache line size 32 bytes > load 4096 bytes with flush entire data > duration with normal cache 12660 ns > -- > 1.7.7 > > _______________________________________________ > rtems-devel mailing list > rtems-devel@rtems.org > http://www.rtems.org/mailman/listinfo/rtems-devel _______________________________________________ rtems-devel mailing list rtems-devel@rtems.org http://www.rtems.org/mailman/listinfo/rtems-devel