7af710d988
XIP (eXecute In Place) kernel image is the image that can be run directly from ROM, using RAM only for writable data. XIP xtensa kernel differs from regular xtensa kernel in the following ways: - it has exception/IRQ vectors merged into text section. No vectors relocation takes place at kernel startup. - .data/.bss location must be specified in the kernel configuration, its content is copied there in the _startup function. - .init.text is merged with the rest of text and is executed from ROM. - when MMU is used the virtual address where the kernel will be mapped must be specified in the kernel configuration. It may be in the KSEG or in the KIO, __pa macro is adjusted to be able to handle both. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
58 lines
1.4 KiB
Makefile
58 lines
1.4 KiB
Makefile
#
|
|
# arch/xtensa/boot/Makefile
|
|
#
|
|
# This file is subject to the terms and conditions of the GNU General Public
|
|
# License. See the file "COPYING" in the main directory of this archive
|
|
# for more details.
|
|
#
|
|
#
|
|
|
|
|
|
# KBUILD_CFLAGS used when building rest of boot (takes effect recursively)
|
|
KBUILD_CFLAGS += -fno-builtin -Iarch/$(ARCH)/boot/include
|
|
HOSTFLAGS += -Iarch/$(ARCH)/boot/include
|
|
|
|
BIG_ENDIAN := $(shell echo __XTENSA_EB__ | $(CC) -E - | grep -v "\#")
|
|
|
|
export ccflags-y
|
|
export BIG_ENDIAN
|
|
|
|
subdir-y := lib
|
|
|
|
# Subdirs for the boot loader(s)
|
|
|
|
boot-$(CONFIG_XTENSA_PLATFORM_ISS) += Image
|
|
boot-$(CONFIG_XTENSA_PLATFORM_XT2000) += Image zImage uImage
|
|
boot-$(CONFIG_XTENSA_PLATFORM_XTFPGA) += Image zImage uImage
|
|
|
|
all: $(boot-y)
|
|
Image: boot-elf
|
|
zImage: boot-redboot
|
|
uImage: $(obj)/uImage
|
|
xipImage: $(obj)/xipImage
|
|
|
|
boot-elf boot-redboot: $(addprefix $(obj)/,$(subdir-y))
|
|
$(Q)$(MAKE) $(build)=$(obj)/$@ $(MAKECMDGOALS)
|
|
|
|
OBJCOPYFLAGS = --strip-all -R .comment -R .notes -O binary
|
|
|
|
vmlinux.bin: vmlinux FORCE
|
|
$(call if_changed,objcopy)
|
|
|
|
vmlinux.bin.gz: vmlinux.bin FORCE
|
|
$(call if_changed,gzip)
|
|
|
|
boot-elf: vmlinux.bin
|
|
boot-redboot: vmlinux.bin.gz
|
|
|
|
UIMAGE_LOADADDR = $(CONFIG_KERNEL_LOAD_ADDRESS)
|
|
UIMAGE_COMPRESSION = gzip
|
|
|
|
$(obj)/uImage: vmlinux.bin.gz FORCE
|
|
$(call if_changed,uimage)
|
|
$(Q)$(kecho) ' Kernel: $@ is ready'
|
|
|
|
$(obj)/xipImage: vmlinux FORCE
|
|
$(call if_changed,objcopy)
|
|
$(Q)$(kecho) ' Kernel: $@ is ready'
|