+++ /dev/null
---- a/arch/arm/mm/cache-v6.S
-+++ b/arch/arm/mm/cache-v6.S
-@@ -179,6 +179,10 @@ ENTRY(v6_flush_kern_dcache_page)
- * - end - virtual end address of region
- */
- ENTRY(v6_dma_inv_range)
-+#ifdef CONFIG_SMP
-+ ldrb r2, [r0]
-+ strb r2, [r0]
-+#endif
- tst r0, #D_CACHE_LINE_SIZE - 1
- bic r0, r0, #D_CACHE_LINE_SIZE - 1
- #ifdef HARVARD_CACHE
-@@ -187,6 +191,10 @@ ENTRY(v6_dma_inv_range)
- mcrne p15, 0, r0, c7, c11, 1 @ clean unified line
- #endif
- tst r1, #D_CACHE_LINE_SIZE - 1
-+#ifdef CONFIG_SMP
-+ ldrneb r2, [r1, #-1]
-+ strneb r2, [r1, #-1]
-+#endif
- bic r1, r1, #D_CACHE_LINE_SIZE - 1
- #ifdef HARVARD_CACHE
- mcrne p15, 0, r1, c7, c14, 1 @ clean & invalidate D line
-@@ -201,6 +209,10 @@ ENTRY(v6_dma_inv_range)
- #endif
- add r0, r0, #D_CACHE_LINE_SIZE
- cmp r0, r1
-+#ifdef CONFIG_SMP
-+ ldrlo r2, [r0]
-+ strlo r2, [r0]
-+#endif
- blo 1b
- mov r0, #0
- mcr p15, 0, r0, c7, c10, 4 @ drain write buffer
-@@ -214,6 +226,9 @@ ENTRY(v6_dma_inv_range)
- ENTRY(v6_dma_clean_range)
- bic r0, r0, #D_CACHE_LINE_SIZE - 1
- 1:
-+#ifdef CONFIG_SMP
-+ ldr r2, [r0]
-+#endif
- #ifdef HARVARD_CACHE
- mcr p15, 0, r0, c7, c10, 1 @ clean D line
- #else
-@@ -232,6 +247,10 @@ ENTRY(v6_dma_clean_range)
- * - end - virtual end address of region
- */
- ENTRY(v6_dma_flush_range)
-+#ifdef CONFIG_SMP
-+ ldrb r2, [r0]
-+ strb r2, [r0]
-+#endif
- bic r0, r0, #D_CACHE_LINE_SIZE - 1
- 1:
- #ifdef HARVARD_CACHE
-@@ -241,6 +260,10 @@ ENTRY(v6_dma_flush_range)
- #endif
- add r0, r0, #D_CACHE_LINE_SIZE
- cmp r0, r1
-+#ifdef CONFIG_SMP
-+ ldrlob r2, [r0]
-+ strlob r2, [r0]
-+#endif
- blo 1b
- mov r0, #0
- mcr p15, 0, r0, c7, c10, 4 @ drain write buffer