[U-Boot-Users] question of codes in \cpu\74xx_7xx\cache.S

gvb.uboot gvb.uboot at gmail.com
Sat Nov 24 13:53:54 CET 2007


xiangguo_li at hotmail.com wrote:
> intercepted from \cpu\74xx_7xx\cache.S
>  
> /*
> * Enable L1 Instruction cache
> */
> _GLOBAL(icache_enable)
> mfspr r3, HID0
> li r5, HID0_ICFI|HID0_ILOCK
> andc r3, r3, r5
> ori r3, r3, HID0_ICE
> ori r5, r3, HID0_ICFI
> mtspr HID0, r5                    // this instruction is redundant,
> mtspr HID0, r3                    // or this one?
> isync
> blr
>  
>  
> -lxg

Most likely neither are redundant.  To say for sure, you need to read 
the User's Manual for the 74xx family where it specifies how to change 
the HID0 register.

Changing the HID0 register (and other processor control registers) 
require certain "magic" sequences that the chip designers specify.  If 
the software doesn't do the specified sequence *exactly,* there is no 
guarantee that the processor will run properly (indeed, it likely will 
crash).

The above code was written by very smart engineers who read and re-read 
the User's Manual.  The sequence has been working for several years now. 
  Odds are really good that it is exactly what is needed.

HTH,
gvb




More information about the U-Boot mailing list