diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2018-12-07 08:12:39 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-12-07 08:12:39 +0100 |
commit | 1d8bb9be35508b62a6f6d0d792fa29568710a2a9 (patch) | |
tree | f77f02aea8e21522c6b0865916d2bfab4cdf19f5 /arch/arm/cpu/uncompress.c | |
parent | 3d565eac1c01ed9c50951bd0c097c32e2e650a45 (diff) | |
parent | 113677818502a071aeaddffd0b64dce3dcab220d (diff) | |
download | barebox-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.c | 18 |
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)) |