diff options
author | Lucas Stach <l.stach@pengutronix.de> | 2014-05-01 23:32:49 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-05-05 15:09:09 +0200 |
commit | 4f381b1aaac3519a5772d6bec6fa4e6b06bb37ab (patch) | |
tree | 806f60a86676a8b03541038dc53bd64292e5f801 /arch/arm/cpu | |
parent | 0668b9fe0a0d24dfc873829d8d882176e08e15ae (diff) | |
download | barebox-4f381b1aaac3519a5772d6bec6fa4e6b06bb37ab.tar.gz barebox-4f381b1aaac3519a5772d6bec6fa4e6b06bb37ab.tar.xz |
ARM: change signature of barebox_arm_entry
Mostly to make it clear that boarddata needs to be
something we can dereference.
As this is a pretty invasive change, use the opportunity
to make the signature 64bit safe.
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/cpu')
-rw-r--r-- | arch/arm/cpu/start-pbl.c | 10 | ||||
-rw-r--r-- | arch/arm/cpu/start.c | 23 | ||||
-rw-r--r-- | arch/arm/cpu/uncompress.c | 10 |
3 files changed, 21 insertions, 22 deletions
diff --git a/arch/arm/cpu/start-pbl.c b/arch/arm/cpu/start-pbl.c index 3ef0118521..407ece5069 100644 --- a/arch/arm/cpu/start-pbl.c +++ b/arch/arm/cpu/start-pbl.c @@ -48,12 +48,12 @@ void __naked __section(.text_head_entry) pbl_start(void) extern void *input_data; extern void *input_data_end; -static noinline __noreturn void __barebox_arm_entry(uint32_t membase, - uint32_t memsize, uint32_t boarddata) +static noinline __noreturn void __barebox_arm_entry(unsigned long membase, + unsigned long memsize, void *boarddata) { uint32_t offset; uint32_t pg_start, pg_end, pg_len; - void __noreturn (*barebox)(uint32_t, uint32_t, uint32_t); + void __noreturn (*barebox)(unsigned long, unsigned long, void *); uint32_t endmem = membase + memsize; unsigned long barebox_base; @@ -127,8 +127,8 @@ static noinline __noreturn void __barebox_arm_entry(uint32_t membase, * Usually a TEXT_BASE of 1MiB below your lowest possible end of memory should * be fine. */ -void __naked __noreturn barebox_arm_entry(uint32_t membase, uint32_t memsize, - uint32_t boarddata) +void __naked __noreturn barebox_arm_entry(unsigned long membase, + unsigned long memsize, void *boarddata) { arm_setup_stack(membase + memsize - 16); diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c index 399e6b8330..961873d6bb 100644 --- a/arch/arm/cpu/start.c +++ b/arch/arm/cpu/start.c @@ -32,12 +32,12 @@ #include "mmu-early.h" unsigned long arm_stack_top; -static unsigned long barebox_boarddata; +static void *barebox_boarddata; /* * return the boarddata variable passed to barebox_arm_entry */ -unsigned long barebox_arm_boarddata(void) +void *barebox_arm_boarddata(void) { return barebox_boarddata; } @@ -49,8 +49,8 @@ void *barebox_arm_boot_dtb(void) return barebox_boot_dtb; } -static noinline __noreturn void __start(uint32_t membase, uint32_t memsize, - uint32_t boarddata) +static noinline __noreturn void __start(unsigned long membase, + unsigned long memsize, void *boarddata) { unsigned long endmem = membase + memsize; unsigned long malloc_start, malloc_end; @@ -83,12 +83,11 @@ static noinline __noreturn void __start(uint32_t membase, uint32_t memsize, * If boarddata is a pointer inside valid memory and contains a * FDT magic then use it as later to probe devices */ - if (boarddata >= membase && boarddata < membase + memsize && - get_unaligned_be32((void *)boarddata) == FDT_MAGIC) { - uint32_t totalsize = get_unaligned_be32((void *)boarddata + 4); + if (boarddata && get_unaligned_be32(boarddata) == FDT_MAGIC) { + uint32_t totalsize = get_unaligned_be32(boarddata + 4); endmem -= ALIGN(totalsize, 64); barebox_boot_dtb = (void *)endmem; - memcpy(barebox_boot_dtb, (void *)boarddata, totalsize); + memcpy(barebox_boot_dtb, boarddata, totalsize); } if ((unsigned long)_text > membase + memsize || @@ -144,8 +143,8 @@ void __naked __section(.text_entry) start(void) * Usually a TEXT_BASE of 1MiB below your lowest possible end of memory should * be fine. */ -void __naked __noreturn barebox_arm_entry(uint32_t membase, uint32_t memsize, - uint32_t boarddata) +void __naked __noreturn barebox_arm_entry(unsigned long membase, + unsigned long memsize, void *boarddata) { arm_setup_stack(membase + memsize - 16); @@ -158,8 +157,8 @@ void __naked __noreturn barebox_arm_entry(uint32_t membase, uint32_t memsize, * First function in the uncompressed image. We get here from * the pbl. The stack already has been set up by the pbl. */ -void __naked __section(.text_entry) start(uint32_t membase, uint32_t memsize, - uint32_t boarddata) +void __naked __section(.text_entry) start(unsigned long membase, + unsigned long memsize, void *boarddata) { __start(membase, memsize, boarddata); } diff --git a/arch/arm/cpu/uncompress.c b/arch/arm/cpu/uncompress.c index 7397c7de32..7081aa78b1 100644 --- a/arch/arm/cpu/uncompress.c +++ b/arch/arm/cpu/uncompress.c @@ -43,11 +43,11 @@ static int __attribute__((__used__)) __attribute__((__section__(".image_end"))) __image_end_dummy = 0xdeadbeef; -static void __noreturn noinline uncompress_start_payload(uint32_t membase, - uint32_t memsize, uint32_t boarddata) +static void __noreturn noinline uncompress_start_payload(unsigned long membase, + unsigned long memsize, void *boarddata) { uint32_t pg_len; - void __noreturn (*barebox)(uint32_t, uint32_t, uint32_t); + void __noreturn (*barebox)(unsigned long, unsigned long, void *); uint32_t endmem = membase + memsize; unsigned long barebox_base; uint32_t *ptr; @@ -98,8 +98,8 @@ static void __noreturn noinline uncompress_start_payload(uint32_t membase, * For the multi images startup process board code jumps here. We will uncompress * the attached barebox image and start it. */ -void __naked __noreturn barebox_arm_entry(uint32_t membase, uint32_t memsize, - uint32_t boarddata) +void __naked __noreturn barebox_arm_entry(unsigned long membase, + unsigned long memsize, void *boarddata) { arm_setup_stack(membase + memsize - 16); |