diff options
Diffstat (limited to 'arch/arm/mm')
-rw-r--r-- | arch/arm/mm/proc-v7.S | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index 4f8486475a79..180a08d03a03 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S | |||
@@ -190,23 +190,37 @@ __v7_setup: | |||
190 | stmia r12, {r0-r5, r7, r9, r11, lr} | 190 | stmia r12, {r0-r5, r7, r9, r11, lr} |
191 | bl v7_flush_dcache_all | 191 | bl v7_flush_dcache_all |
192 | ldmia r12, {r0-r5, r7, r9, r11, lr} | 192 | ldmia r12, {r0-r5, r7, r9, r11, lr} |
193 | |||
194 | mrc p15, 0, r0, c0, c0, 0 @ read main ID register | ||
195 | and r10, r0, #0xff000000 @ ARM? | ||
196 | teq r10, #0x41000000 | ||
197 | bne 2f | ||
198 | and r5, r0, #0x00f00000 @ variant | ||
199 | and r6, r0, #0x0000000f @ revision | ||
200 | orr r0, r6, r5, lsr #20-4 @ combine variant and revision | ||
201 | |||
193 | #ifdef CONFIG_ARM_ERRATA_430973 | 202 | #ifdef CONFIG_ARM_ERRATA_430973 |
194 | mrc p15, 0, r10, c1, c0, 1 @ read aux control register | 203 | teq r5, #0x00100000 @ only present in r1p* |
195 | orr r10, r10, #(1 << 6) @ set IBE to 1 | 204 | mrceq p15, 0, r10, c1, c0, 1 @ read aux control register |
196 | mcr p15, 0, r10, c1, c0, 1 @ write aux control register | 205 | orreq r10, r10, #(1 << 6) @ set IBE to 1 |
206 | mcreq p15, 0, r10, c1, c0, 1 @ write aux control register | ||
197 | #endif | 207 | #endif |
198 | #ifdef CONFIG_ARM_ERRATA_458693 | 208 | #ifdef CONFIG_ARM_ERRATA_458693 |
199 | mrc p15, 0, r10, c1, c0, 1 @ read aux control register | 209 | teq r0, #0x20 @ only present in r2p0 |
200 | orr r10, r10, #(1 << 5) @ set L1NEON to 1 | 210 | mrceq p15, 0, r10, c1, c0, 1 @ read aux control register |
201 | orr r10, r10, #(1 << 9) @ set PLDNOP to 1 | 211 | orreq r10, r10, #(1 << 5) @ set L1NEON to 1 |
202 | mcr p15, 0, r10, c1, c0, 1 @ write aux control register | 212 | orreq r10, r10, #(1 << 9) @ set PLDNOP to 1 |
213 | mcreq p15, 0, r10, c1, c0, 1 @ write aux control register | ||
203 | #endif | 214 | #endif |
204 | #ifdef CONFIG_ARM_ERRATA_460075 | 215 | #ifdef CONFIG_ARM_ERRATA_460075 |
205 | mrc p15, 1, r10, c9, c0, 2 @ read L2 cache aux ctrl register | 216 | teq r0, #0x20 @ only present in r2p0 |
206 | orr r10, r10, #(1 << 22) @ set the Write Allocate disable bit | 217 | mrceq p15, 1, r10, c9, c0, 2 @ read L2 cache aux ctrl register |
207 | mcr p15, 1, r10, c9, c0, 2 @ write the L2 cache aux ctrl register | 218 | tsteq r10, #1 << 22 |
219 | orreq r10, r10, #(1 << 22) @ set the Write Allocate disable bit | ||
220 | mcreq p15, 1, r10, c9, c0, 2 @ write the L2 cache aux ctrl register | ||
208 | #endif | 221 | #endif |
209 | mov r10, #0 | 222 | |
223 | 2: mov r10, #0 | ||
210 | #ifdef HARVARD_CACHE | 224 | #ifdef HARVARD_CACHE |
211 | mcr p15, 0, r10, c7, c5, 0 @ I+BTB cache invalidate | 225 | mcr p15, 0, r10, c7, c5, 0 @ I+BTB cache invalidate |
212 | #endif | 226 | #endif |