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)
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 d63fa7032..60a6f5ea5 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 9b3cadde3..b9dbcf906 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;
}