avr32: fix relocation address calculation

Commit 1865286466 (Introduce generic link
section.h symbol files) changed the __bss_end symbol type from char[] to
ulong. This led to wrong relocation parameters which ended up in a not working
u-boot. Unfortunately this is not clear to see cause due to RAM aliasing we
may get a 'half-working' u-boot then.

Fix this by dereferencing the __bss_end symbol where needed.

Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
This commit is contained in:
Andreas Bießmann 2013-05-07 23:25:17 +00:00
parent bbd0f7e3ba
commit a7e62be091

View file

@ -116,7 +116,7 @@ static int display_banner (void)
printf ("\n\n%s\n\n", version_string); printf ("\n\n%s\n\n", version_string);
printf ("U-Boot code: %08lx -> %08lx data: %08lx -> %08lx\n", printf ("U-Boot code: %08lx -> %08lx data: %08lx -> %08lx\n",
(unsigned long)_text, (unsigned long)_etext, (unsigned long)_text, (unsigned long)_etext,
(unsigned long)_data, (unsigned long)__bss_end); (unsigned long)_data, (unsigned long)(&__bss_end));
return 0; return 0;
} }
@ -183,7 +183,7 @@ void board_init_f(ulong board_type)
* - stack * - stack
*/ */
addr = CONFIG_SYS_SDRAM_BASE + sdram_size; addr = CONFIG_SYS_SDRAM_BASE + sdram_size;
monitor_len = (char *)__bss_end - _text; monitor_len = (char *)(&__bss_end) - _text;
/* /*
* Reserve memory for u-boot code, data and bss. * Reserve memory for u-boot code, data and bss.