diff options
| -rw-r--r-- | arch/arm/boot/compressed/head.S | 7 | ||||
| -rw-r--r-- | arch/arm/mm/proc-xscale.S | 8 |
2 files changed, 12 insertions, 3 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 23016f6aa645..9b42b88bfba0 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
| @@ -448,8 +448,11 @@ __common_mmu_cache_on: | |||
| 448 | mov r1, #-1 | 448 | mov r1, #-1 |
| 449 | mcr p15, 0, r3, c2, c0, 0 @ load page table pointer | 449 | mcr p15, 0, r3, c2, c0, 0 @ load page table pointer |
| 450 | mcr p15, 0, r1, c3, c0, 0 @ load domain access control | 450 | mcr p15, 0, r1, c3, c0, 0 @ load domain access control |
| 451 | mcr p15, 0, r0, c1, c0, 0 @ load control register | 451 | b 1f |
| 452 | mov pc, lr | 452 | .align 5 @ cache line aligned |
| 453 | 1: mcr p15, 0, r0, c1, c0, 0 @ load control register | ||
| 454 | mrc p15, 0, r0, c1, c0, 0 @ and read it back to | ||
| 455 | sub pc, lr, r0, lsr #32 @ properly flush pipeline | ||
| 453 | 456 | ||
| 454 | /* | 457 | /* |
| 455 | * All code following this line is relocatable. It is relocated by | 458 | * All code following this line is relocatable. It is relocated by |
diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S index 535395e25a8a..521538671f4c 100644 --- a/arch/arm/mm/proc-xscale.S +++ b/arch/arm/mm/proc-xscale.S | |||
| @@ -138,17 +138,23 @@ ENTRY(cpu_xscale_proc_fin) | |||
| 138 | * to what would be the reset vector. | 138 | * to what would be the reset vector. |
| 139 | * | 139 | * |
| 140 | * loc: location to jump to for soft reset | 140 | * loc: location to jump to for soft reset |
| 141 | * | ||
| 142 | * Beware PXA270 erratum E7. | ||
| 141 | */ | 143 | */ |
| 142 | .align 5 | 144 | .align 5 |
| 143 | ENTRY(cpu_xscale_reset) | 145 | ENTRY(cpu_xscale_reset) |
| 144 | mov r1, #PSR_F_BIT|PSR_I_BIT|SVC_MODE | 146 | mov r1, #PSR_F_BIT|PSR_I_BIT|SVC_MODE |
| 145 | msr cpsr_c, r1 @ reset CPSR | 147 | msr cpsr_c, r1 @ reset CPSR |
| 148 | mcr p15, 0, r1, c10, c4, 1 @ unlock I-TLB | ||
| 149 | mcr p15, 0, r1, c8, c5, 0 @ invalidate I-TLB | ||
| 146 | mrc p15, 0, r1, c1, c0, 0 @ ctrl register | 150 | mrc p15, 0, r1, c1, c0, 0 @ ctrl register |
| 147 | bic r1, r1, #0x0086 @ ........B....CA. | 151 | bic r1, r1, #0x0086 @ ........B....CA. |
| 148 | bic r1, r1, #0x3900 @ ..VIZ..S........ | 152 | bic r1, r1, #0x3900 @ ..VIZ..S........ |
| 153 | sub pc, pc, #4 @ flush pipeline | ||
| 154 | @ *** cache line aligned *** | ||
| 149 | mcr p15, 0, r1, c1, c0, 0 @ ctrl register | 155 | mcr p15, 0, r1, c1, c0, 0 @ ctrl register |
| 150 | mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches & BTB | ||
| 151 | bic r1, r1, #0x0001 @ ...............M | 156 | bic r1, r1, #0x0001 @ ...............M |
| 157 | mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches & BTB | ||
| 152 | mcr p15, 0, r1, c1, c0, 0 @ ctrl register | 158 | mcr p15, 0, r1, c1, c0, 0 @ ctrl register |
| 153 | @ CAUTION: MMU turned off from this point. We count on the pipeline | 159 | @ CAUTION: MMU turned off from this point. We count on the pipeline |
| 154 | @ already containing those two last instructions to survive. | 160 | @ already containing those two last instructions to survive. |
