summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWoodruff, Richard <r-woodruff2@ti.com>2008-02-29 17:34:35 -0600
committerWolfgang Denk <wd@denx.de>2008-03-02 22:48:34 +0100
commit118978c8eb43803e2794233922df4249fa278b83 (patch)
tree5925a65153a8bc80750d8fffb5e3b6e021cb8d76
parentce1120dd703e6f12c59e4eba9962356a0300b832 (diff)
downloadu-boot-imx-118978c8eb43803e2794233922df4249fa278b83.zip
u-boot-imx-118978c8eb43803e2794233922df4249fa278b83.tar.gz
u-boot-imx-118978c8eb43803e2794233922df4249fa278b83.tar.bz2
Fix alignment error on ARM for modules
Fix alignment fault on ARM when running modules. With out an explicit linker file gcc4.2.1 will half word align __bss_start's value. The word dereference will crash hello_world. signed-off-by Richard Woodruff <r-woodruff2@ti.com>
-rw-r--r--examples/Makefile4
-rw-r--r--examples/stubs.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/examples/Makefile b/examples/Makefile
index d63fa70..60a6f5e 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -30,8 +30,12 @@ LOAD_ADDR = 0x40000
endif
ifeq ($(ARCH),arm)
+ifeq ($(BOARD),omap2420h4)
+LOAD_ADDR = 0x80300000
+else
LOAD_ADDR = 0xc100000
endif
+endif
ifeq ($(ARCH),mips)
LOAD_ADDR = 0x80200000 -T mips.lds
diff --git a/examples/stubs.c b/examples/stubs.c
index 9b3cadd..b9dbcf9 100644
--- a/examples/stubs.c
+++ b/examples/stubs.c
@@ -190,10 +190,10 @@ extern unsigned long __bss_start, _end;
void app_startup(char **argv)
{
- unsigned long * cp = &__bss_start;
+ unsigned char * cp = (unsigned char *) &__bss_start;
/* Zero out BSS */
- while (cp < &_end) {
+ while (cp < (unsigned char *)&_end) {
*cp++ = 0;
}