diff options
author | Woodruff, Richard <r-woodruff2@ti.com> | 2008-02-29 17:34:35 -0600 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2008-03-02 22:48:34 +0100 |
commit | 118978c8eb43803e2794233922df4249fa278b83 (patch) | |
tree | 5925a65153a8bc80750d8fffb5e3b6e021cb8d76 | |
parent | ce1120dd703e6f12c59e4eba9962356a0300b832 (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/Makefile | 4 | ||||
-rw-r--r-- | examples/stubs.c | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/examples/Makefile b/examples/Makefile index d63fa703232..60a6f5ea56d 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 9b3cadde33f..b9dbcf9065b 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; } |