Re: [U-Boot] [PATCH] 85xx: Fix relocation of CCSRBAR

2008-11-13 Thread Kumar Gala

On Nov 13, 2008, at 9:30 AM, Peter Tyser wrote:

> On Thu, 2008-11-13 at 06:30 -0600, Kumar Gala wrote:
>> If the virtual address for CCSRBAR is the same after relocation but
>> the physical address is changing we'd end up having two TLB entries  
>> with
>> the same VA.  Instead we new us the new CCSRBAR virt address + 4k  
>> as a
>> temp virt address to access the old CCSRBAR to relocate it.
>
> s/we new us the/we now use the/

I'll let andy fix that when we applies the patch.

>> Signed-off-by: Kumar Gala <[EMAIL PROTECTED]>
>> ---
>> cpu/mpc85xx/cpu_init.c |9 +
>> 1 files changed, 5 insertions(+), 4 deletions(-)
>>
>> diff --git a/cpu/mpc85xx/cpu_init.c b/cpu/mpc85xx/cpu_init.c
>> index 3a8aef2..1cb9ed9 100644
>> --- a/cpu/mpc85xx/cpu_init.c
>> +++ b/cpu/mpc85xx/cpu_init.c
>> @@ -140,14 +140,15 @@ void cpu_init_early_f(void)
>> #if (CONFIG_SYS_CCSRBAR_DEFAULT != CONFIG_SYS_CCSRBAR_PHYS)
>>  {
>>  u32 temp;
>> +volatile u32 *ccsr_virt =
>> +(volatile u32 *)(CONFIG_SYS_CCSRBAR + 0x1000);
>
> Is there any reason to use volatiles when you access the address using
> the proper io functions?

That's how the functions are defined:

extern inline unsigned in_be32(const volatile unsigned __iomem *addr)

- k
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] 85xx: Fix relocation of CCSRBAR

2008-11-13 Thread Peter Tyser
On Thu, 2008-11-13 at 06:30 -0600, Kumar Gala wrote:
> If the virtual address for CCSRBAR is the same after relocation but
> the physical address is changing we'd end up having two TLB entries with
> the same VA.  Instead we new us the new CCSRBAR virt address + 4k as a
> temp virt address to access the old CCSRBAR to relocate it.

s/we new us the/we now use the/

> Signed-off-by: Kumar Gala <[EMAIL PROTECTED]>
> ---
>  cpu/mpc85xx/cpu_init.c |9 +
>  1 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/cpu/mpc85xx/cpu_init.c b/cpu/mpc85xx/cpu_init.c
> index 3a8aef2..1cb9ed9 100644
> --- a/cpu/mpc85xx/cpu_init.c
> +++ b/cpu/mpc85xx/cpu_init.c
> @@ -140,14 +140,15 @@ void cpu_init_early_f(void)
>  #if (CONFIG_SYS_CCSRBAR_DEFAULT != CONFIG_SYS_CCSRBAR_PHYS)
>   {
>   u32 temp;
> + volatile u32 *ccsr_virt =
> + (volatile u32 *)(CONFIG_SYS_CCSRBAR + 0x1000);

Is there any reason to use volatiles when you access the address using
the proper io functions?

Best,
Peter

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] 85xx: Fix relocation of CCSRBAR

2008-11-13 Thread Kumar Gala
If the virtual address for CCSRBAR is the same after relocation but
the physical address is changing we'd end up having two TLB entries with
the same VA.  Instead we new us the new CCSRBAR virt address + 4k as a
temp virt address to access the old CCSRBAR to relocate it.

Signed-off-by: Kumar Gala <[EMAIL PROTECTED]>
---
 cpu/mpc85xx/cpu_init.c |9 +
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/cpu/mpc85xx/cpu_init.c b/cpu/mpc85xx/cpu_init.c
index 3a8aef2..1cb9ed9 100644
--- a/cpu/mpc85xx/cpu_init.c
+++ b/cpu/mpc85xx/cpu_init.c
@@ -140,14 +140,15 @@ void cpu_init_early_f(void)
 #if (CONFIG_SYS_CCSRBAR_DEFAULT != CONFIG_SYS_CCSRBAR_PHYS)
{
u32 temp;
+   volatile u32 *ccsr_virt =
+   (volatile u32 *)(CONFIG_SYS_CCSRBAR + 0x1000);
 
-   set_tlb(0, CONFIG_SYS_CCSRBAR_DEFAULT, 
CONFIG_SYS_CCSRBAR_DEFAULT,
+   set_tlb(0, (u32)ccsr_virt, CONFIG_SYS_CCSRBAR_DEFAULT,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
1, 1, BOOKE_PAGESZ_4K, 0);
 
-   temp = in_be32((volatile u32 *)CONFIG_SYS_CCSRBAR_DEFAULT);
-   out_be32((volatile u32 *)CONFIG_SYS_CCSRBAR_DEFAULT, 
CONFIG_SYS_CCSRBAR_PHYS >> 12);
-
+   temp = in_be32(ccsr_virt);
+   out_be32(ccsr_virt, CONFIG_SYS_CCSRBAR_PHYS >> 12);
temp = in_be32((volatile u32 *)CONFIG_SYS_CCSRBAR);
}
 #endif
-- 
1.5.6.5

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot