From 59b1c1bf5d2f7f4e335fc675b5b24d1d33fa26e0 Mon Sep 17 00:00:00 2001 From: michael Date: Mon, 7 Oct 2024 10:57:47 +0800 Subject: [PATCH] loongarch:Add uImage support Signed-off-by: michael Signed-off-by: maoxiaochuan --- arch/loongarch/Makefile | 6 ++-- arch/loongarch/boot/Makefile | 60 ++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 2 deletions(-) diff --git a/arch/loongarch/Makefile b/arch/loongarch/Makefile index 22873ee96..2b13d918c 100644 --- a/arch/loongarch/Makefile +++ b/arch/loongarch/Makefile @@ -118,6 +118,7 @@ KBUILD_RUSTFLAGS_KERNEL += -Crelocation-model=pie LDFLAGS_vmlinux += -static -pie --no-dynamic-linker -z notext $(call ld-option, --apply-dynamic-relocs) endif +entry-y = $(shell LC_ALL=C readelf -e vmlinux | grep 'Entry point address:'|grep -o '0x[0-9a-f]\{16\}') cflags-y += $(call cc-option, -mno-check-zero-division) ifndef CONFIG_KASAN @@ -125,7 +126,8 @@ cflags-y += -fno-builtin-memcpy -fno-builtin-memmove -fno-builtin-memset endif load-y = 0x9000000000200000 -bootvars-y = VMLINUX_LOAD_ADDRESS=$(load-y) +bootvars-y = VMLINUX_LOAD_ADDRESS=$(load-y) \ + VMLINUX_ENTRY_ADDRESS=$(entry-y) drivers-$(CONFIG_PCI) += arch/loongarch/pci/ @@ -177,7 +179,7 @@ all: $(notdir $(KBUILD_IMAGE)) $(KBUILD_DTBS) vmlinuz.efi: vmlinux.efi -vmlinux.elf vmlinux.efi vmlinuz.efi: vmlinux +vmlinux.elf vmlinux.efi vmlinuz.efi uImage: vmlinux $(Q)$(MAKE) $(build)=$(boot) $(bootvars-y) $(boot)/$@ install: diff --git a/arch/loongarch/boot/Makefile b/arch/loongarch/boot/Makefile index 4e1c374c5..3b268791d 100644 --- a/arch/loongarch/boot/Makefile +++ b/arch/loongarch/boot/Makefile @@ -23,4 +23,64 @@ EFI_ZBOOT_PAYLOAD := vmlinux.efi EFI_ZBOOT_BFD_TARGET := elf64-loongarch EFI_ZBOOT_MACH_TYPE := LOONGARCH64 +suffix-y := bin +suffix-$(CONFIG_KERNEL_BZIP2) := bz2 +suffix-$(CONFIG_KERNEL_GZIP) := gz +suffix-$(CONFIG_KERNEL_LZMA) := lzma +suffix-$(CONFIG_KERNEL_LZO) := lzo + +targets += uImage +targets += uImage.bin +targets += uImage.bz2 +targets += uImage.gz +targets += uImage.lzma +targets += uImage.lzo + +# +# Compressed vmlinux images +# + +extra-y += vmlinux.bin.bz2 +extra-y += vmlinux.bin.gz +extra-y += vmlinux.bin.lzma +extra-y += vmlinux.bin.lzo + +$(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE + $(call if_changed,bzip2) + +$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE + $(call if_changed,gzip) + +$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE + $(call if_changed,lzma) + +$(obj)/vmlinux.bin.lzo: $(obj)/vmlinux.bin FORCE + $(call if_changed,lzo) + + +UIMAGE_LOADADDR = $(VMLINUX_LOAD_ADDRESS) +UIMAGE_ENTRYADDR = $(VMLINUX_ENTRY_ADDRESS) +# +# Compressed u-boot images +# + +$(obj)/uImage.bin: $(obj)/vmlinux.bin FORCE + $(call if_changed,uimage,none) + +$(obj)/uImage.bz2: $(obj)/vmlinux.bin.bz2 FORCE + $(call if_changed,uimage,bzip2) + +$(obj)/uImage.gz: $(obj)/vmlinux.bin.gz FORCE + $(call if_changed,uimage,gzip) + +$(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma FORCE + $(call if_changed,uimage,lzma) + +$(obj)/uImage.lzo: $(obj)/vmlinux.bin.lzo FORCE + $(call if_changed,uimage,lzo) + +$(obj)/uImage: $(obj)/uImage.$(suffix-y) + @ln -sf $(notdir $<) $@ + @echo ' Image $@ is ready' + include $(srctree)/drivers/firmware/efi/libstub/Makefile.zboot