diff options
Diffstat (limited to 'arch/arm/mm/proc-v7.S')
-rw-r--r-- | arch/arm/mm/proc-v7.S | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index d1ebec42521d..3397f1e64d76 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S | |||
@@ -9,6 +9,7 @@ | |||
9 | * | 9 | * |
10 | * This is the "shell" of the ARMv7 processor support. | 10 | * This is the "shell" of the ARMv7 processor support. |
11 | */ | 11 | */ |
12 | #include <linux/init.h> | ||
12 | #include <linux/linkage.h> | 13 | #include <linux/linkage.h> |
13 | #include <asm/assembler.h> | 14 | #include <asm/assembler.h> |
14 | #include <asm/asm-offsets.h> | 15 | #include <asm/asm-offsets.h> |
@@ -95,6 +96,9 @@ ENTRY(cpu_v7_switch_mm) | |||
95 | mov r2, #0 | 96 | mov r2, #0 |
96 | ldr r1, [r1, #MM_CONTEXT_ID] @ get mm->context.id | 97 | ldr r1, [r1, #MM_CONTEXT_ID] @ get mm->context.id |
97 | orr r0, r0, #TTB_FLAGS | 98 | orr r0, r0, #TTB_FLAGS |
99 | #ifdef CONFIG_ARM_ERRATA_430973 | ||
100 | mcr p15, 0, r2, c7, c5, 6 @ flush BTAC/BTB | ||
101 | #endif | ||
98 | mcr p15, 0, r2, c13, c0, 1 @ set reserved context ID | 102 | mcr p15, 0, r2, c13, c0, 1 @ set reserved context ID |
99 | isb | 103 | isb |
100 | 1: mcr p15, 0, r0, c2, c0, 0 @ set TTB 0 | 104 | 1: mcr p15, 0, r0, c2, c0, 0 @ set TTB 0 |
@@ -153,7 +157,7 @@ cpu_v7_name: | |||
153 | .ascii "ARMv7 Processor" | 157 | .ascii "ARMv7 Processor" |
154 | .align | 158 | .align |
155 | 159 | ||
156 | .section ".text.init", #alloc, #execinstr | 160 | __INIT |
157 | 161 | ||
158 | /* | 162 | /* |
159 | * __v7_setup | 163 | * __v7_setup |
@@ -180,6 +184,22 @@ __v7_setup: | |||
180 | stmia r12, {r0-r5, r7, r9, r11, lr} | 184 | stmia r12, {r0-r5, r7, r9, r11, lr} |
181 | bl v7_flush_dcache_all | 185 | bl v7_flush_dcache_all |
182 | ldmia r12, {r0-r5, r7, r9, r11, lr} | 186 | ldmia r12, {r0-r5, r7, r9, r11, lr} |
187 | #ifdef CONFIG_ARM_ERRATA_430973 | ||
188 | mrc p15, 0, r10, c1, c0, 1 @ read aux control register | ||
189 | orr r10, r10, #(1 << 6) @ set IBE to 1 | ||
190 | mcr p15, 0, r10, c1, c0, 1 @ write aux control register | ||
191 | #endif | ||
192 | #ifdef CONFIG_ARM_ERRATA_458693 | ||
193 | mrc p15, 0, r10, c1, c0, 1 @ read aux control register | ||
194 | orr r10, r10, #(1 << 5) @ set L1NEON to 1 | ||
195 | orr r10, r10, #(1 << 9) @ set PLDNOP to 1 | ||
196 | mcr p15, 0, r10, c1, c0, 1 @ write aux control register | ||
197 | #endif | ||
198 | #ifdef CONFIG_ARM_ERRATA_460075 | ||
199 | mrc p15, 1, r10, c9, c0, 2 @ read L2 cache aux ctrl register | ||
200 | orr r10, r10, #(1 << 22) @ set the Write Allocate disable bit | ||
201 | mcr p15, 1, r10, c9, c0, 2 @ write the L2 cache aux ctrl register | ||
202 | #endif | ||
183 | mov r10, #0 | 203 | mov r10, #0 |
184 | #ifdef HARVARD_CACHE | 204 | #ifdef HARVARD_CACHE |
185 | mcr p15, 0, r10, c7, c5, 0 @ I+BTB cache invalidate | 205 | mcr p15, 0, r10, c7, c5, 0 @ I+BTB cache invalidate |