[PATCH 2/3] Kbuild: Implement CONFIG_UIMAGE_KERNEL_NOLOAD
From: Guan Xuetao <hidden>
Date: 2012-03-07 07:02:45
Also in:
linux-arch, linux-kbuild, linux-sh, lkml, sparclinux
On Tue, 2012-03-06 at 17:30 -0700, Stephen Warren wrote:
quoted hunk ↗ jump to hunk
This allows the user to use U-Boot's mkimage's -T kernel_noload option if their arch Kconfig allows it, and they desire. Signed-off-by: Stephen Warren <redacted> --- The next patch enables this new CONFIG_ALLOW_ option for ARM. I assume that some other architectures will also be able to enable it, but I'm not familiar enough with any to know which. init/Kconfig | 15 +++++++++++++++ scripts/Makefile.lib | 15 ++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-)diff --git a/init/Kconfig b/init/Kconfig index 6cfd71d..2035562 100644 --- a/init/Kconfig +++ b/init/Kconfig@@ -203,6 +203,21 @@ config KERNEL_LZO endchoice +config ALLOW_UIMAGE_KERNEL_NOLOAD + bool + +config UIMAGE_KERNEL_NOLOAD + bool "Use mkimage's -T kernel_noload instead of -T kernel" + depends on ALLOW_UIMAGE_KERNEL_NOLOAD + help + uImage files of type "kernel" embed an absolute load and entry point + address. If the uImage is loaded to a different address, then the + image must be copied the uImage file to the specified load address. + This copy is a waste of time if the uImage is in fact completely + relocatable. If your kernel and bootloader support it, you can build + a "kernel_noload" uImage rather than a "kernel" uImage, which + prevents any such copying. If unsure say N. + config DEFAULT_HOSTNAME string "Default hostname" default "(none)"diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 7b0be18..d9c1c87 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib@@ -314,9 +314,18 @@ MKIMAGE := $(srctree)/scripts/mkuboot.sh UIMAGE_ARCH = $(SRCARCH) UIMAGE_COMPRESSION = $(if $(2),$(2),none) UIMAGE_OPTS-y = -UIMAGE_TYPE = kernel -UIMAGE_LOADADDR=arch_must_set_this -UIMAGE_ENTRYADDR=$(UIMAGE_LOADADDR) +ifeq ($(CONFIG_UIMAGE_KERNEL_NOLOAD),y) + UIMAGE_TYPE = kernel_noload + # Unused by bootloader: + UIMAGE_LOADADDR=0 + # Entry point relative to actual load address: + UIMAGE_ENTRYADDR=0 +else + UIMAGE_TYPE = kernel + # Absolute addresses: + UIMAGE_LOADADDR=arch_must_set_this + UIMAGE_ENTRYADDR=$(UIMAGE_LOADADDR) +endif UIMAGE_NAME = 'Linux-$(KERNELRELEASE)' UIMAGE_IN = $< UIMAGE_OUT = $@
Hi, Stephen, It seems that UIMAGE_ARCH and UIMAGE_LOADADDR can't be modified from arch-Makefiles. Regards, Guan Xuetao