fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / arch / arm / mm / cache-v4.S
index bbc822f..b290806 100644 (file)
@@ -29,9 +29,13 @@ ENTRY(v4_flush_user_cache_all)
  *     Clean and invalidate the entire cache.
  */
 ENTRY(v4_flush_kern_cache_all)
+#ifdef CPU_CP15
        mov     r0, #0
        mcr     p15, 0, r0, c7, c7, 0           @ flush ID cache
        mov     pc, lr
+#else
+       /* FALLTHROUGH */
+#endif
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -44,9 +48,13 @@ ENTRY(v4_flush_kern_cache_all)
  *     - flags - vma_area_struct flags describing address space
  */
 ENTRY(v4_flush_user_cache_range)
+#ifdef CPU_CP15
        mov     ip, #0
        mcreq   p15, 0, ip, c7, c7, 0           @ flush ID cache
        mov     pc, lr
+#else
+       /* FALLTHROUGH */
+#endif
 
 /*
  *     coherent_kern_range(start, end)
@@ -59,6 +67,19 @@ ENTRY(v4_flush_user_cache_range)
  *     - end    - virtual end address
  */
 ENTRY(v4_coherent_kern_range)
+       /* FALLTHROUGH */
+
+/*
+ *     coherent_user_range(start, end)
+ *
+ *     Ensure coherency between the Icache and the Dcache in the
+ *     region described by start.  If you have non-snooping
+ *     Harvard caches, you need to implement this function.
+ *
+ *     - start  - virtual start address
+ *     - end    - virtual end address
+ */
+ENTRY(v4_coherent_user_range)
        mov     pc, lr
 
 /*
@@ -95,8 +116,10 @@ ENTRY(v4_dma_inv_range)
  *     - end    - virtual end address
  */
 ENTRY(v4_dma_flush_range)
+#ifdef CPU_CP15
        mov     r0, #0
        mcr     p15, 0, r0, c7, c7, 0           @ flush ID cache
+#endif
        /* FALLTHROUGH */
 
 /*
@@ -118,6 +141,7 @@ ENTRY(v4_cache_fns)
        .long   v4_flush_user_cache_all
        .long   v4_flush_user_cache_range
        .long   v4_coherent_kern_range
+       .long   v4_coherent_user_range
        .long   v4_flush_kern_dcache_page
        .long   v4_dma_inv_range
        .long   v4_dma_clean_range