[U-Boot] armv8 relocation questions
fenghua at phytium.com.cn
fenghua at phytium.com.cn
Sat May 17 04:13:54 CEST 2014
Hi Jeroen,
> Hello Tom,
>
> On vr, 2014-05-16 at 17:15 -0400, Tom Rini wrote:
>> On Fri, May 16, 2014 at 10:28:25PM +0200, Wolfgang Denk wrote:
>>> Dear Darwin,
>>>
>>> In message <53763B78.6030801 at broadcom.com> you wrote:
>>>>
>>>> 3. Fixed offset case:
>>>> CONFIG_SYS_TEXT_BASE = 0x88000020
>>>
>>> You completely fail to respond to my repeated statement that a
>>> CONFIG_SYS_TEXT_BASE like this is bogus.
>>
>> This. What the heck is going on? CONFIG_SYS_TEXT_BASE is where the
>> text section ends up, and the rest of the binary that follows, until we
>> relocate. If we're being loaded by something else, it needs to be
>> placing us at the right spot. If there's some header on top of the
>> image to be considered by the loader, adjust where THAT loads us. If we
>> cannot, then you must change CONFIG_SYS_TEXT_BASE around. Pad things
>> up a bit for proper alignment. It seems where somewhere around "Doctor,
>> it hurts when I hit myself with a hammer!" and can't stop hammering our
>> poor finger.
>
>
> Not really I guess, I read it as "Doctor, it hurts when I hit myself
> with a hammer!" But morphine prevents it to hurt, so everybody should
> use morphine.
>
> But a bit more serious, as far as understood it u-boot is loaded to the
> CONFIG_SYS_TEXT_BASE being set, but not aligned to the requirements of
> adrp (which assumes 4k). Did someone find a decent description of adrp
> and how it should be relocated? Is adrp always required or an
> optimization?
We can not make gcc-aarch64 do not use adrp instruction when constructing address of label.
So, I think the 4kb alignment would be a requirement or restriction. Gcc did not declare it explicitly
due to in normal world memory are allocated with page aligned.
If u-boot for aarch64 want to be compiled at address not 4kb aligned the relocated address
should also be shifted with the same offset.
David
More information about the U-Boot
mailing list