I have just installed QEMU and compiled linux kernel with ARM support but when I run below command
qemu-system-arm -M versatilepb -m 128M -kernel /home/arit/
As you asking Is this config file is responsible for setting up entry and load address of uImage
Yes make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
this command is responsible for loading entry point.
How ?
--->In kernel source code open vi scripts/mkuboot.sh
here check MKIMAGE=$(type -path "${CROSS_COMPILE}mkimage")
the script will take care to call scripts/Makefile.lib.
here in code
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)
UIMAGE_NAME ?= 'Linux-$(KERNELRELEASE)'
UIMAGE_IN ?= $<
UIMAGE_OUT ?= $@
-->
if the user doesnt mention LOADADDR in command line the address is took from below
UIMAGE_LOADADDR ?= arch_must_set_this
ifneq ($(LOADADDR),)
UIMAGE_LOADADDR=$(LOADADDR)
else
ifeq ($(CONFIG_ZBOOT_ROM),y)
UIMAGE_LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
else
UIMAGE_LOADADDR=$(ZRELADDR)
endif
endif
UIMAGE_LOADADDR=$(ZRELADDR) --> this variable responsible for loading entry address
the valve $(ZRELADDR) is took from board specific for in our case versatile so
arch/arm/mach-versatile/Makefile.boot
here
zreladdr-y += 0x00008000
params_phys-y := 0x00000100
initrd_phys-y := 0x00800000
This is how in kernel scripts are automated when make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
executed.