mirror of https://gitee.com/openkylin/linux.git
sh: bzip2/lzma zImage support.
This plugs in bzip2 and lzma support for zImages. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
df8ce2595f
commit
07e88e1bfc
|
@ -18,6 +18,8 @@ config SUPERH
|
||||||
select HAVE_DMA_API_DEBUG
|
select HAVE_DMA_API_DEBUG
|
||||||
select HAVE_PERF_COUNTERS
|
select HAVE_PERF_COUNTERS
|
||||||
select HAVE_KERNEL_GZIP
|
select HAVE_KERNEL_GZIP
|
||||||
|
select HAVE_KERNEL_BZIP2
|
||||||
|
select HAVE_KERNEL_LZMA
|
||||||
select RTC_LIB
|
select RTC_LIB
|
||||||
select GENERIC_ATOMIC64
|
select GENERIC_ATOMIC64
|
||||||
help
|
help
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
vmlinux.bin.*
|
|
@ -5,6 +5,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
targets := vmlinux vmlinux.bin vmlinux.bin.gz \
|
targets := vmlinux vmlinux.bin vmlinux.bin.gz \
|
||||||
|
vmlinux.bin.bz2 vmlinux.bin.lzma \
|
||||||
head_$(BITS).o misc_$(BITS).o piggy.o
|
head_$(BITS).o misc_$(BITS).o piggy.o
|
||||||
|
|
||||||
OBJECTS = $(obj)/head_$(BITS).o $(obj)/misc_$(BITS).o $(obj)/cache.o
|
OBJECTS = $(obj)/head_$(BITS).o $(obj)/misc_$(BITS).o $(obj)/cache.o
|
||||||
|
@ -38,10 +39,22 @@ $(obj)/vmlinux: $(OBJECTS) $(obj)/piggy.o $(LIBGCC) FORCE
|
||||||
$(obj)/vmlinux.bin: vmlinux FORCE
|
$(obj)/vmlinux.bin: vmlinux FORCE
|
||||||
$(call if_changed,objcopy)
|
$(call if_changed,objcopy)
|
||||||
|
|
||||||
$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
|
vmlinux.bin.all-y := $(obj)/vmlinux.bin
|
||||||
|
|
||||||
|
$(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE
|
||||||
$(call if_changed,gzip)
|
$(call if_changed,gzip)
|
||||||
|
$(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) FORCE
|
||||||
|
$(call if_changed,bzip2)
|
||||||
|
$(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) FORCE
|
||||||
|
$(call if_changed,lzma)
|
||||||
|
|
||||||
|
suffix-$(CONFIG_KERNEL_GZIP) := gz
|
||||||
|
suffix-$(CONFIG_KERNEL_BZIP2) := bz2
|
||||||
|
suffix-$(CONFIG_KERNEL_LZMA) := lzma
|
||||||
|
|
||||||
OBJCOPYFLAGS += -R .empty_zero_page
|
OBJCOPYFLAGS += -R .empty_zero_page
|
||||||
|
|
||||||
$(obj)/piggy.o: $(obj)/piggy.S $(obj)/vmlinux.bin.gz FORCE
|
LDFLAGS_piggy.o := -r --format binary --oformat $(ld-bfd) -T
|
||||||
$(call if_changed,as_o_S)
|
|
||||||
|
$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.$(suffix-y) FORCE
|
||||||
|
$(call if_changed,ld)
|
||||||
|
|
|
@ -41,12 +41,24 @@ extern int _end;
|
||||||
static unsigned long free_mem_ptr;
|
static unsigned long free_mem_ptr;
|
||||||
static unsigned long free_mem_end_ptr;
|
static unsigned long free_mem_end_ptr;
|
||||||
|
|
||||||
#define HEAP_SIZE 0x10000
|
#ifdef CONFIG_HAVE_KERNEL_BZIP2
|
||||||
|
#define HEAP_SIZE 0x400000
|
||||||
|
#else
|
||||||
|
#define HEAP_SIZE 0x10000
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_KERNEL_GZIP
|
#ifdef CONFIG_KERNEL_GZIP
|
||||||
#include "../../../../lib/decompress_inflate.c"
|
#include "../../../../lib/decompress_inflate.c"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_KERNEL_BZIP2
|
||||||
|
#include "../../../../lib/decompress_bunzip2.c"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_KERNEL_LZMA
|
||||||
|
#include "../../../../lib/decompress_unlzma.c"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_SH_STANDARD_BIOS
|
#ifdef CONFIG_SH_STANDARD_BIOS
|
||||||
size_t strlen(const char *s)
|
size_t strlen(const char *s)
|
||||||
{
|
{
|
||||||
|
|
|
@ -40,12 +40,24 @@ extern int _end;
|
||||||
static unsigned long free_mem_ptr;
|
static unsigned long free_mem_ptr;
|
||||||
static unsigned long free_mem_end_ptr;
|
static unsigned long free_mem_end_ptr;
|
||||||
|
|
||||||
#define HEAP_SIZE 0x10000
|
#ifdef CONFIG_HAVE_KERNEL_BZIP2
|
||||||
|
#define HEAP_SIZE 0x400000
|
||||||
|
#else
|
||||||
|
#define HEAP_SIZE 0x10000
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_KERNEL_GZIP
|
#ifdef CONFIG_KERNEL_GZIP
|
||||||
#include "../../../../lib/decompress_inflate.c"
|
#include "../../../../lib/decompress_inflate.c"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_KERNEL_BZIP2
|
||||||
|
#include "../../../../lib/decompress_bunzip2.c"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_KERNEL_LZMA
|
||||||
|
#include "../../../../lib/decompress_unlzma.c"
|
||||||
|
#endif
|
||||||
|
|
||||||
void puts(const char *s)
|
void puts(const char *s)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
.global input_len, input_data
|
|
||||||
.data
|
|
||||||
input_len:
|
|
||||||
.long input_data_end - input_data
|
|
||||||
input_data:
|
|
||||||
.incbin "arch/sh/boot/compressed/vmlinux.bin.gz"
|
|
||||||
input_data_end:
|
|
||||||
.end
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
.rodata.compressed : {
|
||||||
|
input_len = .;
|
||||||
|
LONG(input_data_end - input_data) input_data = .;
|
||||||
|
*(.data)
|
||||||
|
output_len = . - 4;
|
||||||
|
input_data_end = .;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue