summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-03-08 05:02:16 +0300
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-08 05:02:16 +0300
commitd423421cb3e924cf68da231a732c3250c80afa4e (patch)
tree5b4cd07bd86bb3b2a4e249658a50146c867327f8 /include
parent850a9a4e3c019ce67e3bc29c810ac213ec4c169e (diff)
parent744bfe4c25716a7cfc5690aeab8d572b43d7c916 (diff)
downloadlinux-d423421cb3e924cf68da231a732c3250c80afa4e.tar.xz
Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm: [ARM] 3353/1: NAS100d: protect nas100d_power_exit() with machine_is_nas100d() [ARM] 3352/1: DSB required for the completion of a TLB maintenance operation
Diffstat (limited to 'include')
-rw-r--r--include/asm-arm/tlbflush.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/asm-arm/tlbflush.h b/include/asm-arm/tlbflush.h
index 9387a5e1ffe0..0c2acc944a0a 100644
--- a/include/asm-arm/tlbflush.h
+++ b/include/asm-arm/tlbflush.h
@@ -340,6 +340,12 @@ static inline void local_flush_tlb_kernel_page(unsigned long kaddr)
asm("mcr%? p15, 0, %0, c8, c6, 1" : : "r" (kaddr));
if (tlb_flag(TLB_V6_I_PAGE))
asm("mcr%? p15, 0, %0, c8, c5, 1" : : "r" (kaddr));
+
+ /* The ARM ARM states that the completion of a TLB maintenance
+ * operation is only guaranteed by a DSB instruction
+ */
+ if (tlb_flag(TLB_V6_U_PAGE | TLB_V6_D_PAGE | TLB_V6_I_PAGE))
+ asm("mcr%? p15, 0, %0, c7, c10, 4" : : "r" (zero));
}
/*