forked from Imagelibrary/rtems
sptests/spcache01: Detect write-through cache
This commit is contained in:
@@ -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,8 +66,15 @@ 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);
|
||||||
|
|
||||||
for (i = 0; i < n; ++i) {
|
write_through = vdata[0] == ~0;
|
||||||
rtems_test_assert(vdata[i] == i);
|
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) {
|
for (i = 0; i < n; ++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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user