sdk-hwV1.3/lichee/melis-v3.0/source/ekernel/arch/riscv/compressed/Makefile

132 lines
3.9 KiB
Makefile

#
# linux/arch/arm/boot/compressed/Makefile
#
# create a compressed zMelis image from the original Melis
#
OBJS =
AFLAGS_head.o += -DTEXT_OFFSET=$(TEXT_OFFSET)
HEAD = head.o
OBJS += misc.o decompress.o
OBJS += _ashldi3.o
ifeq ($(CONFIG_KERNEL_COMPRESS_DEBUG),y)
OBJS += backtrace.o
endif
# string library code (-Os is enforced to keep it much smaller)
OBJS += string.o
CFLAGS_string.o := -Os
ifeq ($(CONFIG_KERNEL_COMPRESS_ELF),y)
OBJS += elf_loader.o
endif
GCOV_PROFILE := n
ifeq ($(CONFIG_KERNEL_COMPRESS_ELF),y)
DATA := $(obj)/../../../melis30.elf
else
DATA := $(obj)/../../../melis30.bin
endif
#
# We now have a PIC decompressor implementation. Decompressors running
# from RAM should not define ZTEXTADDR. Decompressors running directly
# from ROM or Flash must define ZTEXTADDR (preferably via the config)
# FIXME: Previous assignment to ztextaddr-y is lost here. See SHARK
ZTEXTADDR := $(CONFIG_DRAM_PHYBASE) + 0x200000
ZBSSADDR := ALIGN(8)
CPPFLAGS_link.lds := -DTEXT_START="$(ZTEXTADDR)" -DBSS_START="$(ZBSSADDR)"
compress-$(CONFIG_KERNEL_COMPRESS_GZIP) = gzip
compress-$(CONFIG_KERNEL_COMPRESS_LZO) = lzo
compress-$(CONFIG_KERNEL_COMPRESS_LZMA) = lzma
compress-$(CONFIG_KERNEL_COMPRESS_XZ) = xzkern
compress-$(CONFIG_KERNEL_COMPRESS_LZ4) = lz4
ifeq ($(CONFIG_KERNEL_COMPRESS_GZIP),y)
CONFIG_KERNEL_COMPRESS_METHON := 0x1
endif
ifeq ($(CONFIG_KERNEL_COMPRESS_LZ0),y)
CONFIG_KERNEL_COMPRESS_METHON := 0x2
endif
ifeq ($(CONFIG_KERNEL_COMPRESS_LZMA),y)
CONFIG_KERNEL_COMPRESS_METHON := 0x3
endif
ifeq ($(CONFIG_KERNEL_COMPRESS_XZ),y)
CONFIG_KERNEL_COMPRESS_METHON := 0x4
endif
ifeq ($(CONFIG_KERNEL_COMPRESS_LZ4),y)
CONFIG_KERNEL_COMPRESS_METHON := 0x5
endif
CPPFLAGS_link.lds += -DCONFIG_KERNEL_COMPRESS_METHON="$(CONFIG_KERNEL_COMPRESS_METHON)"
targets := link.lds piggy_data piggy.o orig_data head.o $(OBJS)
clean-files += piggy_data zImage
KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
# -fstack-protector-strong triggers protection checks in this code,
# but it is being used too early to link to meaningful stack_chk logic.
nossp_flags := $(call cc-option, -fno-stack-protector)
ccflags-y := -fpic $(call cc-option,-mno-single-pic-base,) -fno-builtin -I$(obj)
asflags-y := -DZIMAGE
# Supply kernel BSS size to the decompressor via a linker symbol.
KBSS_SZ = $(shell $(CROSS_COMPILE)size $(obj)/../../../melis30.elf | \
awk 'END{print $$3}')
LDFLAGS_zImage = --defsym _kernel_bss_size=$(KBSS_SZ)
LDFLAGS_zImage += --defsym zelfaddr=$(CONFIG_KERNEL_COMPRESS_LOADADDR)
# Supply ZRELADDR to the decompressor via a linker symbol.
LDFLAGS_zImage += --defsym zreladdr=$(CONFIG_DRAM_PHYBASE)
# Report unresolved symbol references
LDFLAGS_zImage += --no-undefined
# Delete all temporary local symbols
LDFLAGS_zImage += -X
# Next argument is a linker script
LDFLAGS_zImage += -T
KBUILD_CFLAGS += -O0
Image: $(obj)/zImage FORCE
ifeq ($(CONFIG_SUPPORT_AMP), y)
@$(Q)$(OBJCOPY) -O binary -j .resource_table $(DATA) rsc.txt
@$(Q)$(OBJCOPY) --update-section .resource_table=rsc.txt $(obj)/zImage
@rm rsc.txt
endif
@cp $(obj)/zImage $(MELIS_BASE)/ekernel/arch/boot/Image
@cp $(obj)/zImage $(MELIS_BASE)/ekernel/arch/boot/zImage
@$(Q)$(STRIP) $(MELIS_BASE)/ekernel/arch/boot/zImage
@$(Q)$(OBJCOPY) -O binary ekernel/arch/boot/zImage ekernel/arch/boot/zImage.bin
$(Q)$(SIZE) ekernel/arch/boot/zImage
$(obj)/zImage: $(obj)/link.lds $(obj)/$(HEAD) $(obj)/piggy.o \
$(addprefix $(obj)/, $(OBJS)) FORCE
$(call if_changed,ld)
# if defined(CONFIG_SUPPORT_AMP) && defined(CONFIG_KERNEL_COMPRESS_ELF)
# we need special handling for elf headers
$(obj)/orig_data: $(DATA) FORCE
@cp $< $@
$(Q)$(STRIP) $@
ifeq ($(CONFIG_SUPPORT_AMP), y)
ifeq ($(CONFIG_KERNEL_COMPRESS_ELF),y)
$(MELIS_BASE)/scripts/markelf $@
endif
endif
$(obj)/piggy_data: $(obj)/orig_data FORCE
$(call if_changed,$(compress-y))
$(obj)/piggy.o: $(obj)/piggy_data
#$(obj)/link.lds: $(obj)/link.lds.S FORCE
# @$(CC) -E -P -U$(ARCH) $(NOSTDINC_FLAGS) $(CPPFLAGS_link.lds) \
# $(obj)/link.lds.S > $(obj)/link.lds