The decision whether to build a 32bit or 64bit barebox has to be made first before anything else, so this makes CONFIG_64BIT a toplevel option without any further dependencies. With this patch we will only present the SoCs/boards which are actually supported by the selected code model in Kconfig. Without this patch it was often possible to select 32bit boards on a 64bit build or vice versa, which resulted in a broken build. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- arch/arm/Kconfig | 52 +++++++++++++------------- arch/arm/configs/layerscape_defconfig | 1 + arch/arm/configs/qemu_virt64_defconfig | 1 + arch/arm/configs/zynqmp_defconfig | 1 + arch/arm/cpu/Kconfig | 5 --- arch/arm/mach-layerscape/Kconfig | 9 ++++- 6 files changed, 38 insertions(+), 31 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 2c1783d8e9..5aef8fcd3b 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -45,6 +45,7 @@ config ARCH_MULTIARCH config ARCH_AT91 bool "Atmel AT91" + depends on 32BIT select GPIOLIB select CLKDEV_LOOKUP select HAVE_PBL_MULTI_IMAGES @@ -54,6 +55,7 @@ config ARCH_AT91 config ARCH_CLPS711X bool "Cirrus Logic EP711x/EP721x/EP731x" + depends on 32BIT select CLKDEV_LOOKUP select CLOCKSOURCE_CLPS711X select COMMON_CLK @@ -67,12 +69,14 @@ config ARCH_CLPS711X config ARCH_DAVINCI bool "TI Davinci" + depends on 32BIT select CPU_ARM926T select HAS_DEBUG_LL select GPIOLIB config ARCH_DIGIC bool "Canon DIGIC-based cameras" + depends on 32BIT select CPU_ARM946E select HAS_DEBUG_LL select CLOCKSOURCE_DIGIC @@ -82,6 +86,7 @@ config ARCH_DIGIC config ARCH_EP93XX bool "Cirrus Logic EP93xx" + depends on 32BIT select CPU_ARM920T select GENERIC_GPIO @@ -99,6 +104,7 @@ config ARCH_LAYERSCAPE config ARCH_MVEBU bool "Marvell EBU platforms" + depends on 32BIT select COMMON_CLK select COMMON_CLK_OF_PROVIDER select CLKDEV_LOOKUP @@ -113,6 +119,7 @@ config ARCH_MVEBU config ARCH_MXS bool "Freescale i.MX23/28 (mxs) based" + depends on 32BIT select GPIOLIB select GENERIC_GPIO select COMMON_CLK @@ -122,6 +129,7 @@ config ARCH_MXS config ARCH_NOMADIK bool "STMicroelectronics Nomadik" + depends on 32BIT select CPU_ARM926T select CLOCKSOURCE_NOMADIK select HAVE_CLK @@ -130,14 +138,17 @@ config ARCH_NOMADIK config ARCH_OMAP_SINGLE bool "TI OMAP" + depends on 32BIT select ARCH_OMAP config ARCH_PXA bool "Intel/Marvell PXA based" + depends on 32BIT select GENERIC_GPIO config ARCH_SOCFPGA bool "Altera SOCFPGA" + depends on 32BIT select HAS_DEBUG_LL select ARM_SMP_TWD select CPU_V7 @@ -146,12 +157,14 @@ config ARCH_SOCFPGA config ARCH_VERSATILE bool "ARM Versatile boards (ARM926EJ-S)" + depends on 32BIT select GPIOLIB select HAVE_CLK select HAS_DEBUG_LL config ARCH_TEGRA bool "NVIDIA Tegra" + depends on 32BIT select CPU_V7 select HAS_DEBUG_LL select HW_HAS_PCI @@ -169,6 +182,7 @@ config ARCH_TEGRA config ARCH_UEMD bool "RC Module UEMD Platform" + depends on 32BIT select CPU_ARM1176 select COMMON_CLK select COMMON_CLK_OF_PROVIDER @@ -180,18 +194,19 @@ config ARCH_UEMD config ARCH_ZYNQ bool "Xilinx Zynq-based boards" + depends on 32BIT select HAS_DEBUG_LL select PBL_IMAGE select GPIOLIB config ARCH_ARM64_VIRT bool "ARM64 QEMU Virt board" + depends on 64BIT select CPU_V8 select HAVE_PBL_MULTI_IMAGES select OFDEVICE select OFTREE select RELOCATABLE - select CPU_SUPPORTS_64BIT_KERNEL select ARM_AMBA select BOARD_ARM_VIRT select HW_HAS_PCI @@ -212,8 +227,6 @@ config ARCH_BCM283X select OFTREE select OFDEVICE select HAVE_PBL_MULTI_IMAGES - select CPU_SUPPORTS_32BIT_KERNEL - select CPU_SUPPORTS_64BIT_KERNEL config ARCH_IMX bool "Freescale iMX-based" @@ -225,11 +238,10 @@ config ARCH_IMX select HAS_DEBUG_LL select HAVE_PBL_MULTI_IMAGES select RELOCATABLE - select CPU_SUPPORTS_32BIT_KERNEL - select CPU_SUPPORTS_64BIT_KERNEL config ARCH_OMAP_MULTI bool "TI OMAP" + depends on 32BIT depends on ARCH_MULTIARCH select OMAP_MULTI_BOARDS select ARCH_OMAP @@ -248,11 +260,10 @@ config ARCH_ROCKCHIP select OFTREE select HAVE_PBL_MULTI_IMAGES select HAS_DEBUG_LL - select CPU_SUPPORTS_32BIT_KERNEL - select CPU_SUPPORTS_64BIT_KERNEL config ARCH_STM32MP bool "STMicroelectronics STM32MP" + depends on 32BIT select ARCH_STM32 select CPU_V7 select HAVE_PBL_MULTI_IMAGES @@ -269,6 +280,7 @@ config ARCH_STM32MP config ARCH_VEXPRESS bool "ARM Vexpress & virt boards" + depends on 32BIT select HAS_DEBUG_LL select CPU_V7 select ARM_AMBA @@ -283,6 +295,7 @@ config ARCH_VEXPRESS config ARCH_ZYNQMP bool "Xilinx ZynqMP-based boards" + depends on 64BIT select CPU_V8 select HAS_DEBUG_LL select HAVE_PBL_MULTI_IMAGES @@ -294,7 +307,6 @@ config ARCH_ZYNQMP select OFDEVICE select OFTREE select RELOCATABLE - select CPU_SUPPORTS_64BIT_KERNEL select HAS_MACB source "arch/arm/cpu/Kconfig" @@ -390,28 +402,18 @@ config ARM_BOARD_PREPEND_ATAG endmenu -choice - prompt "Barebox code model" - help - You should only select this option if you have a workload that - actually benefits from 64-bit processing or if your machine has - large memory. You will only be presented a single option in this - menu if your system does not support both 32-bit and 64-bit modes. - -config 32BIT - bool "32-bit barebox" - depends on CPU_SUPPORTS_32BIT_KERNEL - help - Select this option if you want to build a 32-bit barebox. - config 64BIT - bool "64-bit barebox" - depends on CPU_SUPPORTS_64BIT_KERNEL + bool "64bit barebox" if "$(ARCH)" != "arm64" + default "$(ARCH)" = "arm64" select ARCH_DMA_ADDR_T_64BIT help Select this option if you want to build a 64-bit barebox. -endchoice +config 32BIT + bool + default !64BIT + help + Select this option if you want to build a 32-bit barebox. menu "ARM specific settings" diff --git a/arch/arm/configs/layerscape_defconfig b/arch/arm/configs/layerscape_defconfig index 64e006a37c..35b254f139 100644 --- a/arch/arm/configs/layerscape_defconfig +++ b/arch/arm/configs/layerscape_defconfig @@ -2,6 +2,7 @@ CONFIG_ARCH_LAYERSCAPE=y CONFIG_ARCH_LAYERSCAPE_PPA=y CONFIG_MACH_LS1046ARDB=y CONFIG_MACH_TQMLS1046A=y +CONFIG_64BIT=y CONFIG_MMU=y CONFIG_MALLOC_SIZE=0x0 CONFIG_MALLOC_TLSF=y diff --git a/arch/arm/configs/qemu_virt64_defconfig b/arch/arm/configs/qemu_virt64_defconfig index 3802ead279..f9265cb3a3 100644 --- a/arch/arm/configs/qemu_virt64_defconfig +++ b/arch/arm/configs/qemu_virt64_defconfig @@ -1,4 +1,5 @@ CONFIG_ARCH_ARM64_VIRT=y +CONFIG_64BIT=y CONFIG_ARM_PSCI_CLIENT=y CONFIG_MALLOC_SIZE=0x0 CONFIG_KALLSYMS=y diff --git a/arch/arm/configs/zynqmp_defconfig b/arch/arm/configs/zynqmp_defconfig index 12b4ab30e1..c9b6fa69ef 100644 --- a/arch/arm/configs/zynqmp_defconfig +++ b/arch/arm/configs/zynqmp_defconfig @@ -1,5 +1,6 @@ CONFIG_ARCH_ZYNQMP=y CONFIG_MACH_XILINX_ZCU104=y +CONFIG_64BIT=y CONFIG_ARM_PSCI_CLIENT=y CONFIG_MMU=y CONFIG_MALLOC_SIZE=0x0 diff --git a/arch/arm/cpu/Kconfig b/arch/arm/cpu/Kconfig index f6e2ae9b8a..26f07043fe 100644 --- a/arch/arm/cpu/Kconfig +++ b/arch/arm/cpu/Kconfig @@ -157,8 +157,3 @@ config CACHE_L2X0 bool "Enable L2x0 PrimeCell" depends on MMU && ARCH_HAS_L2X0 -config CPU_SUPPORTS_32BIT_KERNEL - bool - -config CPU_SUPPORTS_64BIT_KERNEL - bool diff --git a/arch/arm/mach-layerscape/Kconfig b/arch/arm/mach-layerscape/Kconfig index 461859ab6c..52527f0c15 100644 --- a/arch/arm/mach-layerscape/Kconfig +++ b/arch/arm/mach-layerscape/Kconfig @@ -17,9 +17,10 @@ config ARCH_LAYERSCAPE_PPA config ARCH_LS1046 select CPU_V8 - select CPU_SUPPORTS_64BIT_KERNEL bool +if 64BIT + config MACH_LS1046ARDB bool "QorIQ LS1046A Reference Design Board" select ARCH_LS1046 @@ -36,10 +37,14 @@ config MACH_TQMLS1046A select DDR_FSL select DDR_FSL_DDR4 +endif + config ARCH_LS1021 select CPU_V7 bool +if 32BIT + config MACH_LS1021AIOT bool "LS1021AIOT Board" select ARCH_LS1021 @@ -47,3 +52,5 @@ config MACH_LS1021AIOT select DDR_FSL_DDR3 endif + +endif -- 2.30.2