
Wolfgang Denk wd@denx.de wrote on 17/09/2009 14:53:59:
Dear Joakim Tjernlund,
Dear me :)
In message <OF680476D5.A9D9D259-ONC1257634.00449AC4-C1257634. 0045177E@transmode.se> you wrote:
But why has the GOT table to fit "into built-in CPU memory"? When we are about to relocate U-Boot to RAM, we already have RAM working. So we should also be able to copy the GOT table to RAM and modify it there as needed before we use it?
Before you get RAM working there are lots of references to global data and string literals. These point to their link address so if you have loaded u-boot at a different address than you link address you have to adjust for the offset. Hard to do that when GOT is in flash :(
Ah, I finally GOT you :-)
*LOL*
Hm... but being able to load (and start) U-Boot from an arbitrary RAM location would be a big benefit, too, even if we still have to copy it to the correct (linked) address when storing it in flash.
Naa, true PIC is what I want. What is really missing is an option to gcc telling it to use a register as GOT base. Something like *assume* GOT is r30 instead of calculating it from __GLOBAL_OFFSET_TABLE__ in every function.