diff options
| author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-08 05:02:16 +0300 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-08 05:02:16 +0300 |
| commit | d423421cb3e924cf68da231a732c3250c80afa4e (patch) | |
| tree | 5b4cd07bd86bb3b2a4e249658a50146c867327f8 /include | |
| parent | 850a9a4e3c019ce67e3bc29c810ac213ec4c169e (diff) | |
| parent | 744bfe4c25716a7cfc5690aeab8d572b43d7c916 (diff) | |
| download | linux-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.h | 6 |
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)); } /* |
