amfc: compress kernel by zstd [1/1]

PD#SWPL-181954

Change-Id: Iaec2a486f4dfb7788238775c4a92d2727b00d45b
Signed-off-by: Tao Zeng <tao.zeng@amlogic.com>
This commit is contained in:
Tao Zeng
2024-08-14 16:05:14 +08:00
committed by Dongjin Kim
parent 42267d17a4
commit 3686620294
3 changed files with 78 additions and 0 deletions

View File

@@ -181,8 +181,66 @@ $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.o \
$(call if_changed,ld)
@$(check_for_bad_syms)
ifneq ($(CONFIG_AMLOGIC_AMFC), )
ifeq ($(srctree),)
srctree := $(patsubst %/,%,$(dir $(CURDIR)))
srctree := $(patsubst %/,%,$(dir $(srctree)))
endif
zstd_src := $(srctree)/common_drivers/drivers/amfc/zstd_tool/common/debug.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/common/entropy_common.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/common/error_private.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/common/fse_decompress.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/common/pool.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/common/threading.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/common/xxhash.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/common/zstd_common.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/compress/fse_compress.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/compress/hist.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/compress/huf_compress.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/compress/zstd_compress.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/compress/zstd_compress_literals.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/compress/zstd_compress_sequences.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/compress/zstd_compress_superblock.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/compress/zstd_double_fast.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/compress/zstd_fast.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/compress/zstd_lazy.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/compress/zstd_ldm.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/compress/zstd_opt.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/compress/zstdmt_compress.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/decompress/huf_decompress.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/decompress/huf_decompress_amd64.S
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/decompress/zstd_ddict.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/decompress/zstd_decompress.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/decompress/zstd_decompress_block.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/dictBuilder/cover.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/dictBuilder/divsufsort.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/dictBuilder/fastcover.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/dictBuilder/zdict.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/legacy/zstd_v05.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/legacy/zstd_v06.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/legacy/zstd_v07.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/benchfn.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/benchzstd.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/datagen.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/dibio.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/fileio.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/timefn.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/util.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/zstdcli.c
zstd_src += $(srctree)/common_drivers/drivers/amfc/zstd_tool/zstdcli_trace.c
$(obj)/zstd:
$(HOSTCC) $(zstd_src) $(LDFLAGS) -o $@
cp -n $@ $(srctree)/
$(obj)/piggy_data: $(obj)/../Image $(obj)/zstd FORCE
$(srctree)/zstd -a -19 $< -o $@
else # CONFIG_AMLOGIC_AMFC
$(obj)/piggy_data: $(obj)/../Image FORCE
$(call if_changed,$(compress-y))
endif # CONFIG_AMLOGIC_AMFC
$(obj)/piggy.o: $(obj)/piggy_data

View File

@@ -34,6 +34,10 @@ extern size_t strlen(const char *s);
extern int memcmp(const void *cs, const void *ct, size_t count);
extern char * strchrnul(const char *, int);
#if IS_ENABLED(CONFIG_AMLOGIC_AMFC)
#define __UNCOMPRESS_IMAGE__
#include "../../../../common_drivers/drivers/amfc/decompress_amfc.c"
#else /* CONFIG_AMLOGIC_AMFC */
#ifdef CONFIG_KERNEL_GZIP
#include "../../../../lib/decompress_inflate.c"
#endif
@@ -58,6 +62,7 @@ extern char * strchrnul(const char *, int);
#ifdef CONFIG_KERNEL_LZ4
#include "../../../../lib/decompress_unlz4.c"
#endif
#endif /* CONFIG_AMLOGIC_AMFC */
int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x))
{

View File

@@ -1211,6 +1211,18 @@ __armv7_mmu_cache_off:
mcr p15, 0, r0, c7, c5, 4 @ ISB
mov pc, lr
#if IS_ENABLED(CONFIG_AMLOGIC_AMFC)
.global serial_putc
serial_putc:
ldr r2, =0xfe07840c @T6D
1111:
ldr r3, [r2, #0]
lsls r3, r3, #10
bmi 1111b
ldr r3, =0xfe078400 @T6D
str r0, [r3, #0]
bx lr
#endif
/*
* Clean and flush the cache to maintain consistency.
*
@@ -1223,6 +1235,9 @@ __armv7_mmu_cache_off:
* r4, r6, r7, r8
*/
.align 5
#if IS_ENABLED(CONFIG_AMLOGIC_AMFC)
.global cache_clean_flush
#endif
cache_clean_flush:
mov r3, #16
mov r11, r1