2 #include <asm/mmu_context.h>
3 #include <asm/cacheflush.h>
6 * Write back the dirty D-caches, but not invalidate them.
8 * START: Virtual Address (U0, P1, or P3)
9 * SIZE: Size of the region.
11 void __weak __flush_wback_region(void *start, int size)
13 unsigned long v, cnt, end;
15 v = (unsigned long)start & ~(L1_CACHE_BYTES-1);
16 end = ((unsigned long)start + size + L1_CACHE_BYTES-1)
17 & ~(L1_CACHE_BYTES-1);
18 cnt = (end - v) / L1_CACHE_BYTES;
21 asm volatile("ocbwb @%0" : : "r" (v));
23 asm volatile("ocbwb @%0" : : "r" (v));
25 asm volatile("ocbwb @%0" : : "r" (v));
27 asm volatile("ocbwb @%0" : : "r" (v));
29 asm volatile("ocbwb @%0" : : "r" (v));
31 asm volatile("ocbwb @%0" : : "r" (v));
33 asm volatile("ocbwb @%0" : : "r" (v));
35 asm volatile("ocbwb @%0" : : "r" (v));
41 asm volatile("ocbwb @%0" : : "r" (v));
48 * Write back the dirty D-caches and invalidate them.
50 * START: Virtual Address (U0, P1, or P3)
51 * SIZE: Size of the region.
53 void __weak __flush_purge_region(void *start, int size)
55 unsigned long v, cnt, end;
57 v = (unsigned long)start & ~(L1_CACHE_BYTES-1);
58 end = ((unsigned long)start + size + L1_CACHE_BYTES-1)
59 & ~(L1_CACHE_BYTES-1);
60 cnt = (end - v) / L1_CACHE_BYTES;
63 asm volatile("ocbp @%0" : : "r" (v));
65 asm volatile("ocbp @%0" : : "r" (v));
67 asm volatile("ocbp @%0" : : "r" (v));
69 asm volatile("ocbp @%0" : : "r" (v));
71 asm volatile("ocbp @%0" : : "r" (v));
73 asm volatile("ocbp @%0" : : "r" (v));
75 asm volatile("ocbp @%0" : : "r" (v));
77 asm volatile("ocbp @%0" : : "r" (v));
82 asm volatile("ocbp @%0" : : "r" (v));
89 * No write back please
91 void __weak __flush_invalidate_region(void *start, int size)
93 unsigned long v, cnt, end;
95 v = (unsigned long)start & ~(L1_CACHE_BYTES-1);
96 end = ((unsigned long)start + size + L1_CACHE_BYTES-1)
97 & ~(L1_CACHE_BYTES-1);
98 cnt = (end - v) / L1_CACHE_BYTES;
101 asm volatile("ocbi @%0" : : "r" (v));
103 asm volatile("ocbi @%0" : : "r" (v));
105 asm volatile("ocbi @%0" : : "r" (v));
107 asm volatile("ocbi @%0" : : "r" (v));
109 asm volatile("ocbi @%0" : : "r" (v));
111 asm volatile("ocbi @%0" : : "r" (v));
113 asm volatile("ocbi @%0" : : "r" (v));
115 asm volatile("ocbi @%0" : : "r" (v));
121 asm volatile("ocbi @%0" : : "r" (v));