From 104c39fe820a9311e4b56f5577a1dc82127484db Mon Sep 17 00:00:00 2001 From: Jean-Christophe PLAGNIOL-VILLARD Date: Sun, 22 Jul 2012 18:12:01 +0800 Subject: [PATCH] compressed image: add gzip support Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD --- arch/arm/cpu/start-pbl.c | 4 ++++ arch/arm/pbl/Makefile | 1 + arch/arm/pbl/piggy.gzip.S | 6 ++++++ common/Kconfig | 4 ++++ lib/decompress_inflate.c | 1 + 5 files changed, 16 insertions(+) create mode 100644 arch/arm/pbl/piggy.gzip.S diff --git a/arch/arm/cpu/start-pbl.c b/arch/arm/cpu/start-pbl.c index dd5c483f8..004ba6a2e 100644 --- a/arch/arm/cpu/start-pbl.c +++ b/arch/arm/cpu/start-pbl.c @@ -46,6 +46,10 @@ extern void *input_data_end; #include "../../../lib/decompress_unlzo.c" #endif +#ifdef CONFIG_IMAGE_COMPRESSION_GZIP +#include "../../../../lib/decompress_inflate.c" +#endif + static void barebox_uncompress(void *compressed_start, unsigned int len) { void (*barebox)(void); diff --git a/arch/arm/pbl/Makefile b/arch/arm/pbl/Makefile index 413591104..04fdffbaf 100644 --- a/arch/arm/pbl/Makefile +++ b/arch/arm/pbl/Makefile @@ -1,4 +1,5 @@ +suffix_$(CONFIG_IMAGE_COMPRESSION_GZIP) = gzip suffix_$(CONFIG_IMAGE_COMPRESSION_LZO) = lzo OBJCOPYFLAGS_zbarebox.bin = -O binary diff --git a/arch/arm/pbl/piggy.gzip.S b/arch/arm/pbl/piggy.gzip.S new file mode 100644 index 000000000..4a623c0c5 --- /dev/null +++ b/arch/arm/pbl/piggy.gzip.S @@ -0,0 +1,6 @@ + .section .piggydata,#alloc + .globl input_data +input_data: + .incbin "arch/arm/pbl/piggy.gzip" + .globl input_data_end +input_data_end: diff --git a/common/Kconfig b/common/Kconfig index 828fc050c..b97392cfd 100644 --- a/common/Kconfig +++ b/common/Kconfig @@ -134,6 +134,9 @@ choice config IMAGE_COMPRESSION_LZO bool "lzo" +config IMAGE_COMPRESSION_GZIP + bool "gzip" + endchoice endif @@ -521,6 +524,7 @@ config DEFAULT_ENVIRONMENT_COMPRESSED bool depends on DEFAULT_ENVIRONMENT depends on !IMAGE_COMPRESSION_LZO + depends on !IMAGE_COMPRESSION_GZIP default y if ZLIB default y if BZLIB default y if LZO_DECOMPRESS diff --git a/lib/decompress_inflate.c b/lib/decompress_inflate.c index 526d6a173..5c1ebb685 100644 --- a/lib/decompress_inflate.c +++ b/lib/decompress_inflate.c @@ -4,6 +4,7 @@ /* prevent inclusion of _LINUX_KERNEL_H in pre-boot environment: lots * errors about console_printk etc... on ARM */ #define _LINUX_KERNEL_H +#include #include "zlib_inflate/inftrees.c" #include "zlib_inflate/inffast.c"