pbl: factorise decompressor
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
36db2a0f05
commit
f73a37aa78
|
@ -24,6 +24,7 @@
|
|||
#include <common.h>
|
||||
#include <init.h>
|
||||
#include <sizes.h>
|
||||
#include <pbl.h>
|
||||
#include <asm/barebox-arm.h>
|
||||
#include <asm/barebox-arm-head.h>
|
||||
#include <asm-generic/memory_layout.h>
|
||||
|
@ -59,16 +60,6 @@ void __naked __bare_init reset(void)
|
|||
extern void *input_data;
|
||||
extern void *input_data_end;
|
||||
|
||||
#define STATIC static
|
||||
|
||||
#ifdef CONFIG_IMAGE_COMPRESSION_LZO
|
||||
#include "../../../lib/decompress_unlzo.c"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMAGE_COMPRESSION_GZIP
|
||||
#include "../../../lib/decompress_inflate.c"
|
||||
#endif
|
||||
|
||||
static unsigned long *ttb;
|
||||
|
||||
static void create_sections(unsigned long addr, int size_m, unsigned int flags)
|
||||
|
@ -127,11 +118,6 @@ static void mmu_disable(void)
|
|||
__mmu_cache_off();
|
||||
}
|
||||
|
||||
static void noinline errorfn(char *error)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
static void barebox_uncompress(void *compressed_start, unsigned int len)
|
||||
{
|
||||
void (*barebox)(void);
|
||||
|
@ -155,10 +141,7 @@ static void barebox_uncompress(void *compressed_start, unsigned int len)
|
|||
else
|
||||
barebox = (void *)TEXT_BASE;
|
||||
|
||||
decompress((void *)compressed_start,
|
||||
len,
|
||||
NULL, NULL,
|
||||
(void *)TEXT_BASE, NULL, errorfn);
|
||||
pbl_barebox_uncompress((void*)TEXT_BASE, compressed_start, len);
|
||||
|
||||
if (use_mmu)
|
||||
mmu_disable();
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <pbl.h>
|
||||
#include <init.h>
|
||||
#include <sizes.h>
|
||||
#include <string.h>
|
||||
|
@ -30,28 +31,10 @@ extern void *input_data_end;
|
|||
unsigned long free_mem_ptr;
|
||||
unsigned long free_mem_end_ptr;
|
||||
|
||||
#define STATIC static
|
||||
|
||||
#ifdef CONFIG_IMAGE_COMPRESSION_LZO
|
||||
#include "../../../lib/decompress_unlzo.c"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMAGE_COMPRESSION_GZIP
|
||||
#include "../../../lib/decompress_inflate.c"
|
||||
#endif
|
||||
|
||||
void pbl_main_entry(void);
|
||||
|
||||
static unsigned long *ttb;
|
||||
|
||||
static noinline void errorfn(char *error)
|
||||
{
|
||||
PUTS_LL(error);
|
||||
PUTC_LL('\n');
|
||||
|
||||
unreachable();
|
||||
}
|
||||
|
||||
static void barebox_uncompress(void *compressed_start, unsigned int len)
|
||||
{
|
||||
/* set 128 KiB at the end of the MALLOC_BASE for early malloc */
|
||||
|
@ -60,10 +43,7 @@ static void barebox_uncompress(void *compressed_start, unsigned int len)
|
|||
|
||||
ttb = (void *)((free_mem_ptr - 0x4000) & ~0x3fff);
|
||||
|
||||
decompress((void *)compressed_start,
|
||||
len,
|
||||
NULL, NULL,
|
||||
(void *)TEXT_BASE, NULL, errorfn);
|
||||
pbl_barebox_uncompress((void*)TEXT_BASE, compressed_start, len);
|
||||
}
|
||||
|
||||
void __section(.text_entry) pbl_main_entry(void)
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
* Copyright (c) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
|
||||
*
|
||||
* Under GPLv2
|
||||
*/
|
||||
|
||||
#ifndef __PBL_H__
|
||||
#define __PBL_H__
|
||||
|
||||
extern unsigned long free_mem_ptr;
|
||||
extern unsigned long free_mem_end_ptr;
|
||||
|
||||
void pbl_barebox_uncompress(void *dest, void *compressed_start, unsigned int len);
|
||||
|
||||
#endif /* __PBL_H__ */
|
|
@ -3,3 +3,4 @@
|
|||
#
|
||||
pbl-y += misc.o
|
||||
pbl-y += string.o
|
||||
pbl-y += decomp.o
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2010-2012 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix
|
||||
* Copyright (c) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
|
||||
*
|
||||
* Under GPLv2 only
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <pbl.h>
|
||||
|
||||
#define STATIC static
|
||||
|
||||
#ifdef CONFIG_IMAGE_COMPRESSION_LZO
|
||||
#include "../../../lib/decompress_unlzo.c"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMAGE_COMPRESSION_GZIP
|
||||
#include "../../../lib/decompress_inflate.c"
|
||||
#endif
|
||||
|
||||
static void noinline errorfn(char *error)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
void pbl_barebox_uncompress(void *dest, void *compressed_start, unsigned int len)
|
||||
{
|
||||
decompress((void *)compressed_start,
|
||||
len,
|
||||
NULL, NULL,
|
||||
dest, NULL, errorfn);
|
||||
}
|
Loading…
Reference in New Issue