mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 23:27:06 +00:00
ARM: 6026/1: ARM: Add support for LZMA-compressed kernel images
This patch allows using a kernel image compressed with LZMA on ARM. Extracting the image is fairly slow, but it might be useful on machines with a very limited amount of storage, as the size benefit is quite significant (about 25% smaller with LZMA compared to GZIP) Tested-by: Martin Michlmayr <tbm@cyrius.com> Tested-by: Paulius Zaleckas <paulius.zaleckas@gmail.com> Signed-off-by: Albin Tonnerre <albin.tonnerre@free-electrons.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
5cfc8ee0bb
commit
6e8699f7d6
4 changed files with 12 additions and 0 deletions
|
@ -21,6 +21,7 @@ config ARM
|
||||||
select HAVE_GENERIC_DMA_COHERENT
|
select HAVE_GENERIC_DMA_COHERENT
|
||||||
select HAVE_KERNEL_GZIP
|
select HAVE_KERNEL_GZIP
|
||||||
select HAVE_KERNEL_LZO
|
select HAVE_KERNEL_LZO
|
||||||
|
select HAVE_KERNEL_LZMA
|
||||||
select HAVE_PERF_EVENTS
|
select HAVE_PERF_EVENTS
|
||||||
select PERF_USE_VMALLOC
|
select PERF_USE_VMALLOC
|
||||||
help
|
help
|
||||||
|
|
|
@ -65,6 +65,7 @@ SEDFLAGS = s/TEXT_START/$(ZTEXTADDR)/;s/BSS_START/$(ZBSSADDR)/
|
||||||
|
|
||||||
suffix_$(CONFIG_KERNEL_GZIP) = gzip
|
suffix_$(CONFIG_KERNEL_GZIP) = gzip
|
||||||
suffix_$(CONFIG_KERNEL_LZO) = lzo
|
suffix_$(CONFIG_KERNEL_LZO) = lzo
|
||||||
|
suffix_$(CONFIG_KERNEL_LZMA) = lzma
|
||||||
|
|
||||||
targets := vmlinux vmlinux.lds \
|
targets := vmlinux vmlinux.lds \
|
||||||
piggy.$(suffix_y) piggy.$(suffix_y).o \
|
piggy.$(suffix_y) piggy.$(suffix_y).o \
|
||||||
|
|
|
@ -40,6 +40,10 @@ extern void error(char *);
|
||||||
#include "../../../../lib/decompress_unlzo.c"
|
#include "../../../../lib/decompress_unlzo.c"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_KERNEL_LZMA
|
||||||
|
#include "../../../../lib/decompress_unlzma.c"
|
||||||
|
#endif
|
||||||
|
|
||||||
void do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x))
|
void do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x))
|
||||||
{
|
{
|
||||||
decompress(input, len, NULL, NULL, output, NULL, error);
|
decompress(input, len, NULL, NULL, output, NULL, error);
|
||||||
|
|
6
arch/arm/boot/compressed/piggy.lzma.S
Normal file
6
arch/arm/boot/compressed/piggy.lzma.S
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
.section .piggydata,#alloc
|
||||||
|
.globl input_data
|
||||||
|
input_data:
|
||||||
|
.incbin "arch/arm/boot/compressed/piggy.lzma"
|
||||||
|
.globl input_data_end
|
||||||
|
input_data_end:
|
Loading…
Reference in a new issue