From: Steven Scholz <steven.scholz@imc-berlin.de>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] Bug in AT91RM9200: icache not enabled!
Date: Sun, 13 Mar 2005 15:03:05 +0100 [thread overview]
Message-ID: <42344819.4020103@imc-berlin.de> (raw)
Hi there,
while finding out why the loading of my FPGA takes so long with the latest CVS
version of U-Boot I noticed that the icache for the AT91RM9200 is not enabled
although icache_enable() is called in cpu/at91rm9200/start.S:
/*
* This does a lot more than just set up the memory, which
* is why it's called lowlevelinit
*/
bl lowlevelinit /* in memsetup.S */
bl icache_enable;
...
mrc p15, 0, r0, c1, c0, 0
/* Reset bit :Little Endian end fast bus mode */
ldr r3, =0xC0000080
/* Set bit :Asynchronous clock mode, Not Fast Bus */
ldr r4, =0xC0000000
bic r0, r0, r3
orr r0, r0, r4
/* write r0 in cp15 control register (cp15 r1) */
mcr p15, 0, r0, c1, c0, 0
The problem is that icache_enable() only works on bit 2 of CP15 Reg 1. But the
important bit seems to be bit 12 judging by the AT91RM9200 User Manual page 49.
Looking at cpu/arm920t/start.S reveals that bit 12 is set:
/*
* disable MMU stuff and caches
*/
mrc p15, 0, r0, c1, c0, 0
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
mcr p15, 0, r0, c1, c0, 0
So my suggestion is using the above code from cpu/arm920t/start.S for the
AT91RM9200 for consistency in the ARM directories. Explicitly disabling MMU
would not harm. And maybe explicitly enabling "Alignment Fault" would be a good
thing as well.
And maybe we should even fix the functions dcache_{en,dis}able() and
icache_{en,dis}able() in cpu/at91rm9200/cpu.c by introducing
-#define C1_IDC (1<<2) /* icache and/or dcache off/on */
+#define C1_DC (1<<2) /* dcache off/on */
+#define C1_IC (1<<1) /* icache off/on */
just like in cpu/arm920t/cpu.c.
Please comment on this. I am willing to sent appropriate patches.
Thanks a million!
--
Steven
next reply other threads:[~2005-03-13 14:03 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-13 14:03 Steven Scholz [this message]
2005-03-13 15:40 ` [U-Boot-Users] Bug in AT91RM9200: icache not enabled! Steven Scholz
[not found] <20050313151724.99D12C1510@atlas.denx.de>
2005-03-13 16:00 ` Steven Scholz
2005-03-13 18:39 ` Wolfgang Denk
2005-03-14 8:23 ` Steven Scholz
-- strict thread matches above, loose matches on Subject: below --
2005-03-30 7:19 Paugam Luc
2005-03-30 8:56 ` Wolfgang Denk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=42344819.4020103@imc-berlin.de \
--to=steven.scholz@imc-berlin.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.