[U-Boot] [PATCH 2/2] 85xx: Ensure BSS segment doesn't start at address 0x0
Peter Tyser
ptyser at xes-inc.com
Tue Oct 6 14:10:26 CEST 2009
> > --- a/cpu/mpc85xx/u-boot.lds.S
> > +++ b/cpu/mpc85xx/u-boot.lds.S
> > @@ -131,6 +131,14 @@ SECTIONS
> >
> > . = RESET_VECTOR_ADDRESS + 0x4;
> >
> > + /*
> > + * Make sure that the bss segment doesn't start at 0x0, otherwise its
> > + * address won't be updated during relocation fixups
> > + */
> > +#if !((RESET_VECTOR_ADDRESS + 0x4) & 0xffffffff)
>
> This seems to be a pretty complicated way of writing
>
> #if (RESET_VECTOR_ADDRESS == 0xFFFFFFFC)
>
> ?
Good point.
> > + . |= 0x10;
>
> I'm not sure if all this is always doing what we want, or if it's
> always working the same way. When building on 32 bit machines, dot
> will wrap around for "0xFFFFFFFC + 4" and result in 0; ". |= 0x10"
> makes it 0x10 then.
>
> When built using a 64 bit host, 0xFFFFFFFC + 4 = 0x100000000, and the
> OR makes it 0x100000010. But here this OR was not needed.
The 64-bit addresses will need to be truncated to 32-bits when the
u-boot ELF is actually generated, so I think we'd get 0x10 when building
on a 32 or 64 bit machine. I'll verify.
Best,
Peter
More information about the U-Boot
mailing list