diff options
author | Marc Kleine-Budde <mkl@pengutronix.de> | 2009-12-07 12:40:11 +0100 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2009-12-09 18:08:09 +0100 |
commit | 44b677b31c3b993ad1191f8e80c74b6b39fb7158 (patch) | |
tree | 3cd4e55de6af2ee40f02e2628ec58f0af15d0194 | |
parent | 6dc5be9a1679adcd95f1d3c091b528b3cf9f5ba8 (diff) | |
download | barebox-44b677b31c3b993ad1191f8e80c74b6b39fb7158.tar.gz barebox-44b677b31c3b993ad1191f8e80c74b6b39fb7158.tar.xz |
start-arm: disable I-cache
<HACK>
For some yet unknown reason the processor on the i.MX35 3stack board (at
least on our board) has problem with an activated instruction cache and
booting from NAND: The copy-from-NFC-RAM-to-SDRAM routine doesn't loop.
It looks basically like this:
1:
ldmia
stmia
cmp
ble 1b
If the "cmp" instruction lives on address 0xbb000640 it doesn't work
with an activated i-cache. The processor flags are not properly updated.
So the ble won't jump back. This obviously break booting from nand.
This is why this patch disables the i-cache.
</HACK>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
-rw-r--r-- | arch/arm/cpu/start-arm.S | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm/cpu/start-arm.S b/arch/arm/cpu/start-arm.S index 8ad03e410a..d683c24083 100644 --- a/arch/arm/cpu/start-arm.S +++ b/arch/arm/cpu/start-arm.S @@ -198,7 +198,7 @@ finished_inval: bic r0, r0, #0x00002300 /* clear bits 13, 9:8 (--V- --RS) */ bic r0, r0, #0x00000087 /* clear bits 7, 2:0 (B--- -CAM) */ orr r0, r0, #0x00000002 /* set bit 2 (A) Align */ - orr r0, r0, #0x00001000 /* set bit 12 (I) I-Cache */ + bic r0, r0, #0x00001000 /* clear bit 12 (I) I-Cache */ mcr p15, 0, r0, c1, c0, 0 /* |