diff options
author | Shinya Kuribayashi <shinya.kuribayashi@necel.com> | 2007-10-21 10:55:36 +0900 |
---|---|---|
committer | Shinya Kuribayashi <skuribay@ruby.dti.ne.jp> | 2007-10-21 10:55:36 +0900 |
commit | 22069215eb7adf5a3888bf7c7784ea9d70a72cd0 (patch) | |
tree | 12fe5fd8d2a5a2009e0a910b3c2bd9011de0e575 /board/purple | |
parent | cbf2323b5b8285ea01acba7bbb905a3162d9b021 (diff) | |
download | u-boot-imx-22069215eb7adf5a3888bf7c7784ea9d70a72cd0.zip u-boot-imx-22069215eb7adf5a3888bf7c7784ea9d70a72cd0.tar.gz u-boot-imx-22069215eb7adf5a3888bf7c7784ea9d70a72cd0.tar.bz2 |
[MIPS] Fix $gp usage
Now we load $gp with _GLOBAL_OFFSET_TABLE_, but this is incorrect use.
As a general principle, we should use _gp for $gp.
Thanks to linker script's help we fortunately have _gp which equals to
_GLOBAL_OFFSET_TABLE_. But once _gp gets out of alignment, we will not
be able to access to GOT entires, global variables and procedure entry
points. The right thing to do is to use _gp.
This patch also introduce a new symbol `.gpword _GLOBAL_OFFSET_TABLE_'
which holds the offset from _gp. When updating GOT entries, we use this
offset and _gp to calculate the final _GLOBAL_OFFSET_TABLE_.
This patch is originally submitted by Vlad Lungu <vlad@comsys.ro>, then
I made some change to leave over num_got_entries.
Signed-off-by: Shinya Kuribayashi <shinya.kuribayashi@necel.com>
Cc: Vlad Lungu <vlad@comsys.ro>
Diffstat (limited to 'board/purple')
0 files changed, 0 insertions, 0 deletions