sptests/spcache01: Detect write-through cache

This commit is contained in:
Sebastian Huber
2014-02-26 12:59:47 +01:00
parent 0a2096b7e3
commit 31494ab264
2 changed files with 15 additions and 3 deletions

View File

@@ -44,6 +44,7 @@ static void test_data_flush_and_invalidate(void)
int n = 32; int n = 32;
int i; int i;
size_t data_size = n * sizeof(data[0]); size_t data_size = n * sizeof(data[0]);
bool write_through;
printf("data cache flush and invalidate test\n"); printf("data cache flush and invalidate test\n");
@@ -65,9 +66,16 @@ static void test_data_flush_and_invalidate(void)
rtems_cache_invalidate_multiple_data_lines(&data[0], data_size); rtems_cache_invalidate_multiple_data_lines(&data[0], data_size);
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) { for (i = 0; i < n; ++i) {
rtems_test_assert(vdata[i] == i); rtems_test_assert(vdata[i] == i);
} }
}
for (i = 0; i < n; ++i) { for (i = 0; i < n; ++i) {
vdata[i] = ~i; vdata[i] = ~i;
@@ -82,7 +90,10 @@ static void test_data_flush_and_invalidate(void)
rtems_interrupt_lock_release(&lock, level); 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 { } else {
printf( printf(
"skip data cache flush and invalidate test" "skip data cache flush and invalidate test"

View File

@@ -1,6 +1,7 @@
*** TEST SPCACHE 1 *** *** TEST SPCACHE 1 ***
data cache flush and invalidate test data cache flush and invalidate test
data cache operations by line passed the 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 data cache line size 32 bytes
load 4096 bytes with flush entire data load 4096 bytes with flush entire data
duration with normal cache 12660 ns duration with normal cache 12660 ns