diff packages/kernel/current/tests/kcache1.c @ 10:d3fbcdfa1b2f ecos-sw-1999-05-29

Merge from eCos master repository on 1999-05-29-00:13:11-BST
author jlarmour
date Fri, 28 May 1999 16:43:09 +0000
parents 443894e2e912
children 306eee292492
line wrap: on
line diff
--- a/packages/kernel/current/tests/kcache1.c
+++ b/packages/kernel/current/tests/kcache1.c
@@ -51,7 +51,11 @@
 // -------------------------------------------------------------------------
 // If the HAL does not supply this, we supply our own version
 
-#ifndef HAL_DCACHE_PURGE_ALL
+#ifdef HAL_DCACHE_SYNC
+
+# define HAL_DCACHE_PURGE_ALL() HAL_DCACHE_SYNC()
+
+#else
 
 static cyg_uint8 dca[HAL_DCACHE_SIZE + HAL_DCACHE_LINE_SIZE*2];
 
@@ -131,6 +135,26 @@ static void entry0( cyg_addrword_t data 
 {
     register CYG_INTERRUPT_STATE oldints;
     
+#ifdef HAL_CACHE_UNIFIED
+
+    HAL_DISABLE_INTERRUPTS(oldints);
+    HAL_DCACHE_PURGE_ALL();             // rely on above definition
+    HAL_UCACHE_INVALIDATE_ALL();
+    HAL_UCACHE_DISABLE();
+    HAL_RESTORE_INTERRUPTS(oldints);
+    CYG_TEST_INFO("Cache off");
+    time1();
+
+    HAL_DISABLE_INTERRUPTS(oldints);
+    HAL_DCACHE_PURGE_ALL();             // rely on above definition
+    HAL_UCACHE_INVALIDATE_ALL();
+    HAL_UCACHE_ENABLE();
+    HAL_RESTORE_INTERRUPTS(oldints);
+    CYG_TEST_INFO("Cache on");
+    time1();
+
+#else // HAL_CACHE_UNIFIED
+
     HAL_DISABLE_INTERRUPTS(oldints);
     HAL_DCACHE_PURGE_ALL();
     HAL_ICACHE_INVALIDATE_ALL();
@@ -182,6 +206,8 @@ static void entry0( cyg_addrword_t data 
     CYG_TEST_INFO("Dcache off Icache off");
     time1();
 
+#endif // HAL_CACHE_UNIFIED
+
     CYG_TEST_PASS_FINISH("End of test");
 }