summaryrefslogtreecommitdiffstats
path: root/arch/arm/cpu
diff options
context:
space:
mode:
authorLucas Stach <l.stach@pengutronix.de>2014-05-01 23:32:49 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-05-05 15:09:09 +0200
commit4f381b1aaac3519a5772d6bec6fa4e6b06bb37ab (patch)
tree806f60a86676a8b03541038dc53bd64292e5f801 /arch/arm/cpu
parent0668b9fe0a0d24dfc873829d8d882176e08e15ae (diff)
downloadbarebox-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.c10
-rw-r--r--arch/arm/cpu/start.c23
-rw-r--r--arch/arm/cpu/uncompress.c10
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);