summaryrefslogtreecommitdiffstats
path: root/board
diff options
context:
space:
mode:
authorAmit Virdi <amit.virdi@st.com>2012-05-07 13:06:39 +0530
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>2012-07-07 14:07:39 +0200
commit5cca72f8b342c8a65eaebda22647572394d98535 (patch)
tree0b85350b987f7d503d2d2f9e735e583461d87c20 /board
parent9264077635f4053a646d90bd8ebd5287c602d18d (diff)
downloadu-boot-5cca72f8b342c8a65eaebda22647572394d98535.tar.gz
u-boot-5cca72f8b342c8a65eaebda22647572394d98535.tar.xz
u-boot-5cca72f8b342c8a65eaebda22647572394d98535.zip
SPEAr: Fix ARM relocation support
While the u-boot code is running from the flash, it is essential that no access is made to the bss segment. This is due to the fact that .rel.dyn and .bss areas overlap and former contains information used in relocation. In SPEAr, this was not taken into consideration. As a result, while the relocation wasn't complete, dram_init populated an uninitialized global variable resulting in corruption of .rel.dyn area, which resulted in u-boot crash. This commit fixes this problem by removing code that accesses bss segment Signed-off-by: Amit Virdi <amit.virdi@st.com> Acked-by: Stefan Roese <sr@denx.de> Signed-off-by: Stefan Roese <sr@denx.de>
Diffstat (limited to 'board')
-rw-r--r--board/spear/common/spr_misc.c20
1 files changed, 1 insertions, 19 deletions
diff --git a/board/spear/common/spr_misc.c b/board/spear/common/spr_misc.c
index 0812c20b8c..3ab278f83a 100644
--- a/board/spear/common/spr_misc.c
+++ b/board/spear/common/spr_misc.c
@@ -40,27 +40,9 @@ static struct chip_data chip_data;
int dram_init(void)
{
- struct xloader_table *xloader_tb =
- (struct xloader_table *)XLOADER_TABLE_ADDRESS;
- struct xloader_table_1_1 *table_1_1;
- struct xloader_table_1_2 *table_1_2;
- struct chip_data *chip = &chip_data;
-
+ /* Store complete RAM size and return */
gd->ram_size = get_ram_size(PHYS_SDRAM_1, PHYS_SDRAM_1_MAXSIZE);
- if (XLOADER_TABLE_VERSION_1_1 == xloader_tb->table_version) {
- table_1_1 = &xloader_tb->table.table_1_1;
- chip->dramfreq = table_1_1->ddrfreq;
- chip->dramtype = table_1_1->ddrtype;
-
- } else if (XLOADER_TABLE_VERSION_1_2 == xloader_tb->table_version) {
- table_1_2 = &xloader_tb->table.table_1_2;
- chip->dramfreq = table_1_2->ddrfreq;
- chip->dramtype = table_1_2->ddrtype;
- } else {
- chip->dramfreq = -1;
- }
-
return 0;
}