[U-Boot] [PATCH] arm: Allow u-boot to run from offset base address
Wolfgang Denk
wd at denx.de
Tue Jun 10 20:13:41 CEST 2014
Dear Steve,
In message <539746C4.9040004 at broadcom.com> you wrote:
>
> There could be "many" reasons why the CONFIG_SYS_TEXT_BASE is not
> aligned on a 0x1000 byte boundary (Darwin has attempted to document his
> particular use-case...)
We should be more precise here and ask for any _good_ reasons.
I can think of many good reasons to keep the text base aligned. As
for the reasons to use an unaligned address that were brought up here,
I still think that it would have been better to use an aligned taxe
base and do the rest with a customized linker script.
> But we think that the solution to support this is relatively
> straightforward:
> (1) after determining the "relocation address" (which will be on a
> 0x1000 byte boundary),
> (2) add "CONFIG_SYS_TEXT_BASE % 4096" to that "relocation address"
> (which effectively makes the "relocation offset" a multiple of 0x1000
> too...)
> So, in the scenario #1, (CONFIG_SYS_TEXT_BASE % 4096) = 0, so this
> algorithm changes nothing.
> And in scenario #2, (CONFIG_SYS_TEXT_BASE % 4096) = 0x20, therefore, we
> would now get the following:
> the relocation offset is: 0x77f9b000
> therefore, after relocation:
> _start symbol is at 0xfff9b020 (0x88000020+0x77f9b000)
> vectors symbol is at 0xfff9b800 (0x88000800+0x77f9b000)
I still cannot understand why _start and CONFIG_SYS_TEXT_BASE would
have to be the same. There is no such requirement. What exactly
prevents you from assigning _start a location at offset 0x20 to the
start of the text segment, i. e. CONFIG_SYS_TEXT_BASE ?
Then everything should be still the same for you, and no voodoo coding
would be needed.
> (3) HOWEVER, shifting the address UP may cause the end of the relocated
> code to run past the end of the available memory... So we could:
This problem is void if you just use a poperly aligned text base in
combination with a prope start.S resp. linker script to make sure
_start is where you want it.
> I trust that everyone will find this explanation acceptable...
No, I do not see a good reason to add such code.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Let the programmers be many and the managers few -- then all will be
productive. -- Geoffrey James, "The Tao of Programming"
More information about the U-Boot
mailing list