132 lines
3.9 KiB
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
|