[U-Boot-Users] UNCACHED_SDRAM macro issue

Luigi 'Comio' Mantellini luigi.mantellini at idf-hit.com
Thu Feb 28 09:23:53 CET 2008


Hi Shinya,

I found the error... but it's not an u-boot issue. I'm using a (old)
customized linux 2.6.10 (from my vendor) that also adds the 0xa0000000
offset to the pointers passed by u-boot, assuming that address is
expressed in termos of physical address. I corrected the linux code
masking and (after) addind the segment.

Thanks a lot for your help.


luigi


On sab, 2008-02-16 at 18:06 +0900, Shinya Kuribayashi wrote:

> Shinya Kuribayashi wrote:
> > Shinya Kuribayashi wrote:
> >>> I think that on my application the UNCACHED_SDRAM should map the address
> >>> on KSEG1 (how it is now) but this simply doesn't work. Instead, using
> >>> the PHYSADDR(a) macro... the kernel is able to start.
> >>>
> >>> I suspect that there are issues on cache management. Can be? 
> >> IMHO it's not related to cache.
> > 
> > How do you set ERL and EXL bits? Please try to clear them at the
> > STATUS register initialization like:
> > 
> >  reset:
> >         <snip>
> > 
> >         /* STATUS register */
> >         mfc0    k0, CP0_STATUS
> > -       li      k1, ~ST0_IE
> > +       li      k1, ~(ST0_ERL | ST0_EXL | ST0_IE)
> >         and     k0, k1
> >         mtc0    k0, CP0_STATUS
> > 
> > ERL and EXL disable exceptions. Due to this spec, we are in danger
> > of overlooking something critical. If this change brings in new
> > exception(s), please fix the causes of them first. Hope this helps.
> 
> Err, sorry for confusing example. Here's the right one:
> 
> diff --git a/cpu/mips/start.S b/cpu/mips/start.S
> index c92b162..02797f7 100644
> --- a/cpu/mips/start.S
> +++ b/cpu/mips/start.S
> @@ -211,14 +211,20 @@ reset:
>  	mtc0	zero, CP0_WATCHLO
>  	mtc0	zero, CP0_WATCHHI
>  
> +	/* Inhibit deffered WATCH exception */
> +	mfc0	k0, CP0_CAUSE
> +	li	k1, ~(1UL << 22)	# CP0.Cause.WP = 0
> +	and     k0, k0, k1
> +	mtc0	k0, CP0_CAUSE
> +
>  	/* STATUS register */
>  #ifdef  CONFIG_TB0229
>  	li	k0, ST0_CU0
>  #else
>  	mfc0	k0, CP0_STATUS
>  #endif
> -	li	k1, ~ST0_IE
> -	and	k0, k1
> +	ori	k0, (ST0_ERL | ST0_EXL | ST0_IE)
> +	xori	k0, (ST0_ERL | ST0_EXL)
>  	mtc0	k0, CP0_STATUS
>  
>  	/* CAUSE register */
> 
> Again, it's highy recommended to make sure U-Boot works fine under
> interrupts enabled (CP0.Status.IE=1), before digging into UNCACHED_
> SDRAM problem.
> 
>   Shinya
> 

Industrie Dial Face S.p.A.
Luigi Mantellini
R&D - Software
Industrie Dial Face S.p.A.
Via Canzo, 4 
20068 Peschiera Borromeo (MI), Italy
Tel.:   +39 02 5167 2813
Fax:    +39 02 5167 2459
E-mail: luigi.mantellini at idf-hit.com
GPG fingerprint: 3DD1 7B71 FBDF 6376
1B4A
                 B003 175F E979 907E
1650
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.denx.de/pipermail/u-boot/attachments/20080228/0b332f66/attachment.htm 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: idf_logo.gif
Type: image/gif
Size: 4122 bytes
Desc: not available
Url : http://lists.denx.de/pipermail/u-boot/attachments/20080228/0b332f66/attachment.gif 


More information about the U-Boot mailing list