diff options
Diffstat (limited to 'arch/arm/Makefile')
-rw-r--r-- | arch/arm/Makefile | 213 |
1 files changed, 56 insertions, 157 deletions
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index f4b0e8d6b6..ecc74838f6 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -1,11 +1,15 @@ -KBUILD_DEFCONFIG := qemu_virt64_defconfig +# SPDX-License-Identifier: GPL-2.0-only + +KBUILD_DEFCONFIG := multi_v8_defconfig KBUILD_CPPFLAGS += -D__ARM__ -fno-strict-aliasing # Explicitly specifiy 32-bit ARM ISA since toolchain default can be -mthumb: -ifeq ($(CONFIG_CPU_V8),y) +ifeq ($(CONFIG_CPU_64),y) KBUILD_CPPFLAGS +=$(call cc-option,-maarch64,) -else +endif +ifeq ($(CONFIG_CPU_32),y) KBUILD_CPPFLAGS +=$(call cc-option,-marm,) +KBUILD_CPPFLAGS += -msoft-float endif ifeq ($(CONFIG_CPU_BIG_ENDIAN),y) @@ -24,14 +28,12 @@ endif # at least some of the code would be executed with MMU off, lets be # conservative and instruct the compiler not to generate any unaligned # accesses -ifneq ($(CONFIG_CPU_V8),y) +ifeq ($(CONFIG_CPU_32),y) KBUILD_CFLAGS += -mno-unaligned-access -else -KBUILD_CFLAGS += -mstrict-align endif - +ifeq ($(CONFIG_CPU_64),y) +KBUILD_CFLAGS += -mstrict-align # Prevent use of floating point and Advanced SIMD registers. -ifeq ($(CONFIG_CPU_V8),y) KBUILD_CFLAGS += -mgeneral-regs-only endif @@ -39,6 +41,7 @@ endif # Note that GCC does not numerically define an architecture version # macro, but instead defines a whole series of macros which makes # testing for a specific architecture or later rather impossible. +arch-y := -include asm/arch-check.h arch-$(CONFIG_CPU_64v8) := -D__LINUX_ARM_ARCH__=8 $(call cc-option,-march=armv8-a) arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a) arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6) @@ -50,19 +53,11 @@ tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM926T) :=-mtune=arm9tdmi tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale -ifeq ($(CONFIG_CPU_V8), y) -CFLAGS_ABI :=-mabi=lp64 -else -ifeq ($(CONFIG_AEABI),y) -CFLAGS_ABI :=-mabi=aapcs-linux -else -CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,) -endif -endif +CFLAGS_ABI-$(CONFIG_CPU_64) :=-mabi=lp64 +CFLAGS_ABI-$(CONFIG_CPU_32) :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,) +CFLAGS_ABI-$(CONFIG_AEABI) :=-mabi=aapcs-linux -ifeq ($(CONFIG_ARM_UNWIND),y) -CFLAGS_ABI +=-funwind-tables -endif +CFLAGS_ABI-$(CONFIG_ARM_UNWIND) +=-funwind-tables ifeq ($(CONFIG_THUMB2_BAREBOX),y) AFLAGS_AUTOIT :=$(call as-option,-Wa$(comma)-mimplicit-it=always,-Wa$(comma)-mauto-it) @@ -71,63 +66,46 @@ CFLAGS_THUMB2 :=-mthumb $(AFLAGS_AUTOIT) $(AFLAGS_NOWARN) AFLAGS_THUMB2 :=$(CFLAGS_THUMB2) -Wa$(comma)-mthumb endif -ifeq ($(CONFIG_CPU_V8), y) -KBUILD_CPPFLAGS += $(CFLAGS_ABI) $(arch-y) $(tune-y) +KBUILD_CPPFLAGS += $(CFLAGS_ABI-y) $(arch-y) $(tune-y) + +ifeq ($(CONFIG_CPU_64), y) KBUILD_AFLAGS += -include asm/unified.h -export S64 = _64 -else -KBUILD_CPPFLAGS += $(CFLAGS_ABI) $(arch-y) $(tune-y) -msoft-float $(CFLAGS_THUMB2) +export S64_32 = 64 +export S64 = 64 +endif +ifeq ($(CONFIG_CPU_32), y) +KBUILD_CPPFLAGS += $(CFLAGS_THUMB2) KBUILD_AFLAGS += -include asm/unified.h -msoft-float $(AFLAGS_THUMB2) +export S64_32 = 32 +export S32 = 32 endif # Machine directory name. This list is sorted alphanumerically # by CONFIG_* macro name. -machine-$(CONFIG_ARCH_AT91) := at91 -machine-$(CONFIG_ARCH_BCM283X) := bcm283x -machine-$(CONFIG_ARCH_CLPS711X) := clps711x -machine-$(CONFIG_ARCH_DAVINCI) := davinci -machine-$(CONFIG_ARCH_DIGIC) := digic -machine-$(CONFIG_ARCH_EP93XX) := ep93xx -machine-$(CONFIG_ARCH_IMX) := imx -machine-$(CONFIG_ARCH_LAYERSCAPE) := layerscape -machine-$(CONFIG_ARCH_MXS) := mxs -machine-$(CONFIG_ARCH_MVEBU) := mvebu -machine-$(CONFIG_ARCH_NOMADIK) := nomadik -machine-$(CONFIG_ARCH_OMAP) := omap -machine-$(CONFIG_ARCH_PXA) := pxa -machine-$(CONFIG_ARCH_ROCKCHIP) := rockchip -machine-$(CONFIG_ARCH_SAMSUNG) := samsung -machine-$(CONFIG_ARCH_SOCFPGA) := socfpga -machine-$(CONFIG_ARCH_STM32MP) := stm32mp -machine-$(CONFIG_ARCH_VERSATILE) := versatile -machine-$(CONFIG_ARCH_VEXPRESS) := vexpress -machine-$(CONFIG_ARCH_TEGRA) := tegra -machine-$(CONFIG_ARCH_UEMD) := uemd -machine-$(CONFIG_ARCH_ZYNQ) := zynq -machine-$(CONFIG_ARCH_ZYNQMP) := zynqmp - - -# Board directory name. This list is sorted alphanumerically -# by CONFIG_* macro name. -# -# DO NOT ADD NEW ENTRIES TO THIS LIST! -# Add to arch/arm/boards/Makefile instead. -# -# These are here only because they have a board specific config.h. -# TODO: Get rid of board specific config.h and move these to -# arch/arm/boards/Makefile aswell. -board-$(CONFIG_MACH_A9M2410) += a9m2410 -board-$(CONFIG_MACH_A9M2440) += a9m2440 -board-$(CONFIG_MACH_AT91RM9200EK) += at91rm9200ek -board-$(CONFIG_MACH_MINI2440) += friendlyarm-mini2440 -board-$(CONFIG_MACH_MINI6410) += friendlyarm-mini6410 -board-$(CONFIG_MACH_PCM027) += phytec-phycore-pxa270 -board-$(CONFIG_MACH_TINY210) += friendlyarm-tiny210 -board-$(CONFIG_MACH_TINY6410) += friendlyarm-tiny6410 - -machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y)) - -KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs)) +machine-$(CONFIG_ARCH_AT91) += at91 +machine-$(CONFIG_ARCH_BCM283X) += bcm283x +machine-$(CONFIG_ARCH_CLPS711X) += clps711x +machine-$(CONFIG_ARCH_DAVINCI) += davinci +machine-$(CONFIG_ARCH_DIGIC) += digic +machine-$(CONFIG_ARCH_EP93XX) += ep93xx +machine-$(CONFIG_ARCH_IMX) += imx +machine-$(CONFIG_ARCH_K3) += k3 +machine-$(CONFIG_ARCH_LAYERSCAPE) += layerscape +machine-$(CONFIG_ARCH_MXS) += mxs +machine-$(CONFIG_ARCH_MVEBU) += mvebu +machine-$(CONFIG_ARCH_NOMADIK) += nomadik +machine-$(CONFIG_ARCH_OMAP) += omap +machine-$(CONFIG_ARCH_PXA) += pxa +machine-$(CONFIG_ARCH_ROCKCHIP) += rockchip +machine-$(CONFIG_ARCH_SAMSUNG) += samsung +machine-$(CONFIG_ARCH_SOCFPGA) += socfpga +machine-$(CONFIG_ARCH_STM32MP) += stm32mp +machine-$(CONFIG_ARCH_VERSATILE) += versatile +machine-$(CONFIG_ARCH_VEXPRESS) += vexpress +machine-$(CONFIG_ARCH_TEGRA) += tegra +machine-$(CONFIG_ARCH_UEMD) += uemd +machine-$(CONFIG_ARCH_ZYNQ) += zynq +machine-$(CONFIG_ARCH_ZYNQMP) += zynqmp TEXT_BASE = $(CONFIG_TEXT_BASE) @@ -155,13 +133,6 @@ endif KBUILD_BINARY := barebox.bin -barebox.s5p: $(KBUILD_BINARY) - $(Q)scripts/s5p_cksum $< barebox.s5p - -ifeq ($(CONFIG_ARCH_S5PCxx),y) -KBUILD_IMAGE := barebox.s5p -endif - quiet_cmd_mlo ?= IFT $@ cmd_mlo ?= scripts/omap_signGP -o MLO -l $(TEXT_BASE) -c $< @@ -184,29 +155,6 @@ ifeq ($(CONFIG_ARCH_DAVINCI),y) KBUILD_IMAGE := barebox.ubl endif -quiet_cmd_am35xx_spi_image = SPI-IMG $@ - cmd_am35xx_spi_image = scripts/mk-omap-image -s -a $(TEXT_BASE) $< > $@ - -barebox.spi: $(KBUILD_BINARY) FORCE - $(call if_changed,am35xx_spi_image) - -MLO.spi: MLO FORCE - $(call if_changed,am35xx_spi_image) - -ifeq ($(CONFIG_OMAP_BUILD_SPI),y) -KBUILD_IMAGE := MLO.spi -endif - -quiet_cmd_zynq_image = ZYNQ-IMG $@ - cmd_zynq_image = scripts/zynq_mkimage $< $@ - -barebox.zynq: $(KBUILD_BINARY) FORCE - $(call if_changed,zynq_image) - -ifeq ($(machine-y),zynq) -KBUILD_IMAGE := barebox.zynq -endif - quiet_cmd_canon_a1100_image = DD $@ cmd_canon_a1100_image = scripts/canon-a1100-image $< $@ || \ echo "WARNING: Couldn't create Canon A1100 image due to previous errors." @@ -217,44 +165,6 @@ ifeq ($(CONFIG_MACH_CANON_A1100),y) KBUILD_IMAGE := barebox.canon-a1100.bin endif -KWBIMAGE_OPTS = \ - -c -i $(srctree)/$(BOARD)/kwbimage.cfg -d $(TEXT_BASE) -e $(TEXT_BASE) - -quiet_cmd_kwbimage = KWB $@ - cmd_kwbimage = scripts/kwbimage -p $< $(KWBIMAGE_OPTS) -o $@ || \ - echo "WARNING: Couldn't create KWB image due to previous errors." - -quiet_cmd_kwbimage_uart = KWBUART $@ - cmd_kwbimage_uart = scripts/kwbimage -m uart -p $< $(KWBIMAGE_OPTS) -o $@ || \ - echo "WARNING Couldn't create KWB image due to previous errors." - -barebox.kwb: $(KBUILD_BINARY) FORCE - $(call if_changed,kwbimage) - -barebox.kwbuart: $(KBUILD_BINARY) FORCE - $(call if_changed,kwbimage_uart) - -ifeq ($(CONFIG_ARCH_MVEBU),y) -KBUILD_IMAGE := barebox.kwb barebox.kwbuart -endif - -barebox.imximg: $(KBUILD_BINARY) FORCE - $(call if_changed,imx_image,$(CFG_$(@F)),) - -boarddir = $(srctree)/arch/arm/boards -imxcfg-$(CONFIG_MACH_FREESCALE_MX53_SMD) += $(boarddir)/freescale-mx53-smd/flash-header.imxcfg -imxcfg-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += $(boarddir)/eukrea_cpuimx51/flash-header.imxcfg -imxcfg-$(CONFIG_MACH_FREESCALE_MX25_3STACK) += $(boarddir)/freescale-mx25-3ds/flash-header.imxcfg -imxcfg-$(CONFIG_MACH_FREESCALE_MX35_3STACK) += $(boarddir)/freescale-mx35-3ds/flash-header.imxcfg -imxcfg-$(CONFIG_MACH_EUKREA_CPUIMX25) += $(boarddir)/eukrea_cpuimx25/flash-header.imxcfg -imxcfg-$(CONFIG_MACH_EUKREA_CPUIMX35) += $(boarddir)/eukrea_cpuimx35/flash-header.imxcfg -imxcfg-$(CONFIG_MACH_PCM043) += $(boarddir)/phytec-phycore-imx35/flash-header.imxcfg -imxcfg-$(CONFIG_MACH_KINDLE3) += $(boarddir)/kindle3/flash-header.imxcfg -ifneq ($(imxcfg-y),) -CFG_barebox.imximg := $(imxcfg-y) -KBUILD_IMAGE := barebox.imximg -endif - archclean: $(MAKE) $(clean)=$(pbl) @@ -265,36 +175,25 @@ dts := arch/arm/dts KBUILD_IMAGE ?= $(KBUILD_BINARY) -archprepare: maketools -maketools: - $(Q)$(MAKE) $(build)=arch/arm/tools include/generated/mach-types.h - -PHONY += maketools - -ifneq ($(board-y),) -BOARD := arch/arm/boards/$(board-y)/ -else -BOARD := -endif - ifneq ($(machine-y),) -MACH := arch/arm/mach-$(machine-y)/ +MACH := $(patsubst %,arch/arm/mach-%/,$(machine-y)) else MACH := endif -common-y += $(BOARD) arch/arm/boards/ $(MACH) +common-y += arch/arm/boards/ $(MACH) common-y += arch/arm/cpu/ +common-y += arch/arm/crypto/ -ifeq ($(CONFIG_CPU_V8), y) +ifeq ($(CONFIG_CPU_64), y) common-y += arch/arm/lib64/ else -common-y += arch/arm/lib32/ arch/arm/crypto/ +common-y += arch/arm/lib32/ endif common-$(CONFIG_OFTREE) += arch/arm/dts/ -ifeq ($(CONFIG_CPU_V8), y) +ifeq ($(CONFIG_CPU_64), y) lds-y := arch/arm/lib64/barebox.lds else lds-y := arch/arm/lib32/barebox.lds @@ -302,6 +201,6 @@ endif common- += $(patsubst %,arch/arm/boards/%/,$(board-)) -CLEAN_FILES += include/generated/mach-types.h barebox-flash-image +CLEAN_FILES += barebox-flash-image CLEAN_FILES += arch/arm/lib64/barebox.lds CLEAN_FILES += arch/arm/lib32/barebox.lds |