]> Git Repo - J-u-boot.git/commitdiff
SPEAr: Fix ARM relocation support
authorAmit Virdi <[email protected]>
Mon, 7 May 2012 07:36:39 +0000 (13:06 +0530)
committerAlbert ARIBAUD <[email protected]>
Sat, 7 Jul 2012 12:07:39 +0000 (14:07 +0200)
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 <[email protected]>
Acked-by: Stefan Roese <[email protected]>
Signed-off-by: Stefan Roese <[email protected]>
board/spear/common/spr_misc.c

index 0812c20b8c8895c4ae707226ecf952a36bdb3af1..3ab278f83a7da4420e268762f55d856013e5906c 100644 (file)
@@ -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;
 }
 
This page took 0.029227 seconds and 4 git commands to generate.