mirror of
https://github.com/torvalds/linux.git
synced 2024-11-30 08:01:59 +00:00
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>
102 lines
3.0 KiB
Makefile
102 lines
3.0 KiB
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.
|
|
#
|
|
# Copyright (C) 2001 - 2005 Tensilica Inc.
|
|
# Copyright (C) 2014 Cadence Design Systems Inc.
|
|
#
|
|
# This file is included by the global makefile so that you can add your own
|
|
# architecture-specific flags and dependencies. Remember to do have actions
|
|
# for "archclean" and "archdep" for cleaning up and making dependencies for
|
|
# this architecture
|
|
|
|
# Core configuration.
|
|
# (Use VAR=<xtensa_config> to use another default compiler.)
|
|
|
|
variant-y := $(patsubst "%",%,$(CONFIG_XTENSA_VARIANT_NAME))
|
|
|
|
VARIANT = $(variant-y)
|
|
export VARIANT
|
|
|
|
# Test for cross compiling
|
|
|
|
ifneq ($(VARIANT),)
|
|
COMPILE_ARCH = $(shell uname -m)
|
|
|
|
ifneq ($(COMPILE_ARCH), xtensa)
|
|
ifndef CROSS_COMPILE
|
|
CROSS_COMPILE = xtensa_$(VARIANT)-
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
# Platform configuration
|
|
|
|
platform-$(CONFIG_XTENSA_PLATFORM_XT2000) := xt2000
|
|
platform-$(CONFIG_XTENSA_PLATFORM_ISS) := iss
|
|
platform-$(CONFIG_XTENSA_PLATFORM_XTFPGA) := xtfpga
|
|
|
|
PLATFORM = $(platform-y)
|
|
export PLATFORM
|
|
|
|
# temporarily until string.h is fixed
|
|
KBUILD_CFLAGS += -ffreestanding -D__linux__
|
|
KBUILD_CFLAGS += -pipe -mlongcalls -mtext-section-literals
|
|
KBUILD_CFLAGS += $(call cc-option,-mforce-no-pic,)
|
|
KBUILD_CFLAGS += $(call cc-option,-mno-serialize-volatile,)
|
|
|
|
KBUILD_AFLAGS += -mlongcalls -mtext-section-literals
|
|
|
|
ifneq ($(CONFIG_LD_NO_RELAX),)
|
|
KBUILD_LDFLAGS := --no-relax
|
|
endif
|
|
|
|
ifeq ($(shell echo __XTENSA_EB__ | $(CC) -E - | grep -v "\#"),1)
|
|
CHECKFLAGS += -D__XTENSA_EB__
|
|
KBUILD_CPPFLAGS += -DCONFIG_CPU_BIG_ENDIAN
|
|
endif
|
|
ifeq ($(shell echo __XTENSA_EL__ | $(CC) -E - | grep -v "\#"),1)
|
|
CHECKFLAGS += -D__XTENSA_EL__
|
|
KBUILD_CPPFLAGS += -DCONFIG_CPU_LITTLE_ENDIAN
|
|
endif
|
|
|
|
vardirs := $(patsubst %,arch/xtensa/variants/%/,$(variant-y))
|
|
plfdirs := $(patsubst %,arch/xtensa/platforms/%/,$(platform-y))
|
|
|
|
KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(vardirs) $(plfdirs))
|
|
|
|
KBUILD_DEFCONFIG := iss_defconfig
|
|
|
|
# Only build variant and/or platform if it includes a Makefile
|
|
|
|
buildvar := $(shell test -e $(srctree)/arch/xtensa/variants/$(VARIANT)/Makefile && echo arch/xtensa/variants/$(VARIANT)/)
|
|
buildplf := $(shell test -e $(srctree)/arch/xtensa/platforms/$(PLATFORM)/Makefile && echo arch/xtensa/platforms/$(PLATFORM)/)
|
|
|
|
# Find libgcc.a
|
|
|
|
LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name)
|
|
|
|
head-y := arch/xtensa/kernel/head.o
|
|
core-y += arch/xtensa/kernel/ arch/xtensa/mm/
|
|
core-y += $(buildvar) $(buildplf)
|
|
core-y += arch/xtensa/boot/dts/
|
|
|
|
libs-y += arch/xtensa/lib/ $(LIBGCC)
|
|
drivers-$(CONFIG_OPROFILE) += arch/xtensa/oprofile/
|
|
|
|
boot := arch/xtensa/boot
|
|
|
|
all Image zImage uImage xipImage: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) $@
|
|
|
|
archheaders:
|
|
$(Q)$(MAKE) $(build)=arch/xtensa/kernel/syscalls all
|
|
|
|
define archhelp
|
|
@echo '* Image - Kernel ELF image with reset vector'
|
|
@echo '* zImage - Compressed kernel image (arch/xtensa/boot/images/zImage.*)'
|
|
@echo '* uImage - U-Boot wrapped image'
|
|
@echo ' xipImage - XIP image'
|
|
endef
|