ARM: 7090/1: CACHE-L2X0: filter start address can be 0 and is often 0
[linux-3.10.git] / arch / arm / mm / tlb-v6.S
index fd6adde..eca07f5 100644 (file)
@@ -10,6 +10,7 @@
  *  ARM architecture version 6 TLB handling functions.
  *  These assume a split I/D TLB.
  */
+#include <linux/init.h>
 #include <linux/linkage.h>
 #include <asm/asm-offsets.h>
 #include <asm/page.h>
@@ -53,6 +54,7 @@ ENTRY(v6wbi_flush_user_tlb_range)
        add     r0, r0, #PAGE_SZ
        cmp     r0, r1
        blo     1b
+       mcr     p15, 0, ip, c7, c10, 4          @ data synchronization barrier
        mov     pc, lr
 
 /*
@@ -81,13 +83,10 @@ ENTRY(v6wbi_flush_kern_tlb_range)
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r2, c7, c10, 4          @ data synchronization barrier
+       mcr     p15, 0, r2, c7, c5, 4           @ prefetch flush (isb)
        mov     pc, lr
 
-       .section ".text.init", #alloc, #execinstr
+       __INIT
 
-       .type   v6wbi_tlb_fns, #object
-ENTRY(v6wbi_tlb_fns)
-       .long   v6wbi_flush_user_tlb_range
-       .long   v6wbi_flush_kern_tlb_range
-       .long   v6wbi_tlb_flags
-       .size   v6wbi_tlb_fns, . - v6wbi_tlb_fns
+       /* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */
+       define_tlb_functions v6wbi, v6wbi_tlb_flags