[U-Boot] ARM: set up endianess
Roman Mashak
romez777 at gmail.com
Tue Dec 30 12:37:03 CET 2008
Hello
my platform is ARM926EJS-based big-endian, therefore I have to
configure endianess via co-processor C15 registers as quickly as
possible. The best place I can see is in
$(uboot)/cpu/arm926ejs/start.s, as it is where co-processor is being
configured; here is what I came up with:
cpu_init_crit:
/*
* flush v4 I/D caches
*/
....
/*
* 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 */
#ifdef CONFIG_ARCH_BIGENDIAN
orr r0, r0, #0x00000080 /* set bit 7 (B) Endianism */
#endif
mcr p15, 0, r0, c1, c0, 0
....
where 'CONFIG_ARCH_BIGENDIAN' is defined in my platform's configuration.
I know that modifying platform's startup code is not encouraged. Is
there more correct approach?
Thanks.
--
Roman Mashak
More information about the U-Boot
mailing list