summaryrefslogtreecommitdiffstats
path: root/arch/arm/cpu/uncompress.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2018-12-07 08:12:39 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2018-12-07 08:12:39 +0100
commit1d8bb9be35508b62a6f6d0d792fa29568710a2a9 (patch)
treef77f02aea8e21522c6b0865916d2bfab4cdf19f5 /arch/arm/cpu/uncompress.c
parent3d565eac1c01ed9c50951bd0c097c32e2e650a45 (diff)
parent113677818502a071aeaddffd0b64dce3dcab220d (diff)
downloadbarebox-1d8bb9be35508b62a6f6d0d792fa29568710a2a9.tar.gz
barebox-1d8bb9be35508b62a6f6d0d792fa29568710a2a9.tar.xz
Merge branch 'for-next/imx'
Diffstat (limited to 'arch/arm/cpu/uncompress.c')
-rw-r--r--arch/arm/cpu/uncompress.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/arch/arm/cpu/uncompress.c b/arch/arm/cpu/uncompress.c
index 048bca0c95..be92bda4e8 100644
--- a/arch/arm/cpu/uncompress.c
+++ b/arch/arm/cpu/uncompress.c
@@ -37,6 +37,9 @@
unsigned long free_mem_ptr;
unsigned long free_mem_end_ptr;
+extern unsigned char input_data[];
+extern unsigned char input_data_end[];
+
void __noreturn barebox_multi_pbl_start(unsigned long membase,
unsigned long memsize, void *boarddata)
{
@@ -44,11 +47,11 @@ void __noreturn barebox_multi_pbl_start(unsigned long membase,
void __noreturn (*barebox)(unsigned long, unsigned long, void *);
unsigned long endmem = membase + memsize;
unsigned long barebox_base;
- uint32_t *image_end;
- void *pg_start;
+ void *pg_start, *pg_end;
unsigned long pc = get_pc();
- image_end = (void *)__image_end_marker + global_variable_offset();
+ pg_start = input_data + global_variable_offset();
+ pg_end = input_data_end + global_variable_offset();
if (IS_ENABLED(CONFIG_PBL_RELOCATABLE)) {
/*
@@ -62,14 +65,7 @@ void __noreturn barebox_multi_pbl_start(unsigned long membase,
relocate_to_adr(membase);
}
- /*
- * image_end is the image_end_marker defined above. It is the last location
- * in the executable. Right after the executable the build process adds
- * the size of the appended compressed binary followed by the compressed
- * binary itself.
- */
- pg_start = image_end + 2;
- pg_len = *(image_end + 1);
+ pg_len = pg_end - pg_start;
uncompressed_len = get_unaligned((const u32 *)(pg_start + pg_len - 4));
if (IS_ENABLED(CONFIG_RELOCATABLE))