diff options
Diffstat (limited to 'arch/arm/mm/cache-v7.S')
| -rw-r--r-- | arch/arm/mm/cache-v7.S | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/arch/arm/mm/cache-v7.S b/arch/arm/mm/cache-v7.S index a3ebf7a4f49b..6136e68ce953 100644 --- a/arch/arm/mm/cache-v7.S +++ b/arch/arm/mm/cache-v7.S | |||
| @@ -173,15 +173,22 @@ ENTRY(v7_coherent_user_range) | |||
| 173 | UNWIND(.fnstart ) | 173 | UNWIND(.fnstart ) |
| 174 | dcache_line_size r2, r3 | 174 | dcache_line_size r2, r3 |
| 175 | sub r3, r2, #1 | 175 | sub r3, r2, #1 |
| 176 | bic r0, r0, r3 | 176 | bic r12, r0, r3 |
| 177 | 1: | 177 | 1: |
| 178 | USER( mcr p15, 0, r0, c7, c11, 1 ) @ clean D line to the point of unification | 178 | USER( mcr p15, 0, r12, c7, c11, 1 ) @ clean D line to the point of unification |
| 179 | add r12, r12, r2 | ||
| 180 | cmp r12, r1 | ||
| 181 | blo 1b | ||
| 179 | dsb | 182 | dsb |
| 180 | USER( mcr p15, 0, r0, c7, c5, 1 ) @ invalidate I line | 183 | icache_line_size r2, r3 |
| 181 | add r0, r0, r2 | 184 | sub r3, r2, #1 |
| 185 | bic r12, r0, r3 | ||
| 182 | 2: | 186 | 2: |
| 183 | cmp r0, r1 | 187 | USER( mcr p15, 0, r12, c7, c5, 1 ) @ invalidate I line |
| 184 | blo 1b | 188 | add r12, r12, r2 |
| 189 | cmp r12, r1 | ||
| 190 | blo 2b | ||
| 191 | 3: | ||
| 185 | mov r0, #0 | 192 | mov r0, #0 |
| 186 | ALT_SMP(mcr p15, 0, r0, c7, c1, 6) @ invalidate BTB Inner Shareable | 193 | ALT_SMP(mcr p15, 0, r0, c7, c1, 6) @ invalidate BTB Inner Shareable |
| 187 | ALT_UP(mcr p15, 0, r0, c7, c5, 6) @ invalidate BTB | 194 | ALT_UP(mcr p15, 0, r0, c7, c5, 6) @ invalidate BTB |
| @@ -194,10 +201,10 @@ ENTRY(v7_coherent_user_range) | |||
| 194 | * isn't mapped, just try the next page. | 201 | * isn't mapped, just try the next page. |
| 195 | */ | 202 | */ |
| 196 | 9001: | 203 | 9001: |
| 197 | mov r0, r0, lsr #12 | 204 | mov r12, r12, lsr #12 |
| 198 | mov r0, r0, lsl #12 | 205 | mov r12, r12, lsl #12 |
| 199 | add r0, r0, #4096 | 206 | add r12, r12, #4096 |
| 200 | b 2b | 207 | b 3b |
| 201 | UNWIND(.fnend ) | 208 | UNWIND(.fnend ) |
| 202 | ENDPROC(v7_coherent_kern_range) | 209 | ENDPROC(v7_coherent_kern_range) |
| 203 | ENDPROC(v7_coherent_user_range) | 210 | ENDPROC(v7_coherent_user_range) |
