On Sun, Sep 27, 2009 at 11:15 PM, Joakim Tjernlund
<joakim.tjernl...@transmode.se> wrote:
> Wolfgang Denk <w...@denx.de> wrote on 23/09/2009 20:23:14:
>>
>> Dear Peter Tyser,
>>
>> In message <1253710639.3968.19.ca...@ptyser-laptop> you wrote:
>> >

>>
>> > Nice!  It'd be great to have the magical 20 lines of assembly put into
>> > some semi-understandable c.
>>
>> :-)
>
> I have worked some more on this but all boards need to be converted to use
> the new C-variants.
>
> Anyhow, I have also been thinking/working on making U-boot
> fully PIC and reached a important conclusion. The GOT holds absolute
> ptr values and there is not much one can do about it sans modifying gcc.
> So before u-boot is relocated to RAM one must manually add any offset to
> all global/static data and string literals. The majority of strings
> are passed directly to printf and friends so the offset can be added inside
> printf. The remaining few data accesses needs to be dealt with directly, 
> example:
> -       for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
> +       for (init_fnc_ptr = got_off(init_sequence); *init_fnc_ptr; 
> ++init_fnc_ptr) {
>
> Only code called before relocation to RAM needs this, mostly the _f() 
> functions.
> Would this be an acceptable change?
>

I think you might want to look at the x86 relocation work I have just
submitted for comment. It processes all relocation sections generated by
gcc/ld using the ELF data structures defined in elf.h - I generate code at
a text base equal to the boot flash (0x38004000) so I can easily check if
the relocation entry is with the executable. After the elf relocation
processing, there is ZERO need for any offset compensation once I've jumped
into the relocated code

And its all in C ;)

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

Reply via email to