From bab3a3b976cfb64af5b7604b31c266d497a383f6 Mon Sep 17 00:00:00 2001 From: Jean-Christophe PLAGNIOL-VILLARD Date: Mon, 2 Nov 2009 19:51:25 +0100 Subject: arm: introduce CPU CONFIG from linux Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD Signed-off-by: Sascha Hauer --- arch/arm/Kconfig | 20 +++------ arch/arm/Makefile | 6 +-- arch/arm/configs/a9m2410_defconfig | 2 +- arch/arm/configs/a9m2440_defconfig | 2 +- arch/arm/configs/at91sam9260ek_defconfig | 2 +- arch/arm/configs/at91sam9263ek_defconfig | 2 +- arch/arm/configs/eukrea_cpuimx27_defconfig | 2 +- arch/arm/configs/freescale_mx25_3stack_defconfig | 2 +- arch/arm/configs/mmccpu_defconfig | 2 +- arch/arm/configs/mx21ads_defconfig | 2 +- arch/arm/configs/mx27ads_defconfig | 2 +- arch/arm/configs/netx_nxdb500_defconfig | 2 +- .../configs/omap3430_sdp3430_per_uart_defconfig | 4 +- .../arm/configs/omap3530_beagle_per_uart_defconfig | 4 +- arch/arm/configs/pca100_defconfig | 2 +- arch/arm/configs/pcm038_defconfig | 2 +- arch/arm/configs/pm9263_defconfig | 2 +- arch/arm/configs/scb9328_defconfig | 2 +- arch/arm/cpu/Kconfig | 52 ++++++++++++++++++++++ arch/arm/cpu/Makefile | 6 +-- arch/arm/cpu/start-arm.S | 6 +-- arch/arm/mach-at91/Kconfig | 4 +- arch/arm/mach-imx/Kconfig | 8 ++-- arch/arm/mach-omap/Kconfig | 2 +- 24 files changed, 92 insertions(+), 48 deletions(-) create mode 100644 arch/arm/cpu/Kconfig diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 6fa11ee8cc..1ce216aa72 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -18,15 +18,6 @@ config ARM select HAVE_CONFIGURABLE_TEXT_BASE default y -config ARM920T - bool - -config ARM926EJS - bool - -config ARMCORTEXA8 - bool - menu "System Type" choice @@ -37,24 +28,25 @@ config ARCH_AT91 config ARCH_AT91RM9200 bool "Atmel AT91RM9200" - select ARM920T + select CPU_ARM920T config ARCH_IMX bool "Freescale iMX-based" config ARCH_NETX bool "Hilscher NetX based" - select ARM926EJS + select CPU_ARM926T config ARCH_OMAP bool "TI OMAP" config ARCH_S3C24xx bool "Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2442, S3C2443" - select ARM920T + select CPU_ARM920T endchoice +source arch/arm/cpu/Kconfig source arch/arm/mach-at91/Kconfig source arch/arm/mach-at91rm9200/Kconfig source arch/arm/mach-imx/Kconfig @@ -92,9 +84,9 @@ config INITRD_TAG If you want to start a 2.6 kernel and use an initrd image say y here. -config ARMCORTEXA8_DCACHE_SKIP +config CPU_V7_DCACHE_SKIP bool "Skip DCache Invlidate" - depends on ARMCORTEXA8 + depends on CPU_V7 default n help If your architecture configuration uses some other method of disabling caches, enable this diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 9f0f7ecde4..f471291cd1 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -30,8 +30,8 @@ board-$(CONFIG_MACH_A9M2440) := a9m2440 board-$(CONFIG_MACH_EUKREA_CPUIMX27) := eukrea_cpuimx27 # FIXME "cpu-y" never used on ARM! -cpu-$(CONFIG_ARM920T) := arm920t -cpu-$(CONFIG_ARM926EJS) := arm926ejs +cpu-$(CONFIG_CPU_ARM920T) := arm920t +cpu-$(CONFIG_CPU_ARM926T) := arm926ejs machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y)) @@ -70,7 +70,7 @@ archprepare: maketools PHONY += maketools # Add architecture specific flags -ifeq ($(CONFIG_ARMCORTEXA8),y) +ifeq ($(CONFIG_CPU_V7),y) CPPFLAGS += -march=armv7a endif diff --git a/arch/arm/configs/a9m2410_defconfig b/arch/arm/configs/a9m2410_defconfig index 5152c745f2..e973a30684 100644 --- a/arch/arm/configs/a9m2410_defconfig +++ b/arch/arm/configs/a9m2410_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Digi A9M2410" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARM920T=y +CONFIG_CPU_ARM920T=y # CONFIG_MACH_MX1ADS is not set # CONFIG_MACH_SCB9328 is not set # CONFIG_MACH_PCM038 is not set diff --git a/arch/arm/configs/a9m2440_defconfig b/arch/arm/configs/a9m2440_defconfig index 2667f46391..5e49aab316 100644 --- a/arch/arm/configs/a9m2440_defconfig +++ b/arch/arm/configs/a9m2440_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Digi A9M2440" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARM920T=y +CONFIG_CPU_ARM920T=y # CONFIG_MACH_MX1ADS is not set # CONFIG_MACH_SCB9328 is not set # CONFIG_MACH_PCM038 is not set diff --git a/arch/arm/configs/at91sam9260ek_defconfig b/arch/arm/configs/at91sam9260ek_defconfig index bb1e60767e..f198e5a409 100644 --- a/arch/arm/configs/at91sam9260ek_defconfig +++ b/arch/arm/configs/at91sam9260ek_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Atmel 91SAM9260-EK" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARM926EJS=y +CONFIG_CPU_ARM926T=y CONFIG_ARCH_AT91=y CONFIG_ARCH_AT91SAM9260=y # CONFIG_MACH_MX1ADS is not set diff --git a/arch/arm/configs/at91sam9263ek_defconfig b/arch/arm/configs/at91sam9263ek_defconfig index 95436e34aa..b1f8b30390 100644 --- a/arch/arm/configs/at91sam9263ek_defconfig +++ b/arch/arm/configs/at91sam9263ek_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Atmel at91sam9263-ek" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARM926EJS=y +CONFIG_CPU_ARM926T=y CONFIG_ARCH_AT91=y CONFIG_ARCH_AT91SAM9263=y # CONFIG_MACH_MX1ADS is not set diff --git a/arch/arm/configs/eukrea_cpuimx27_defconfig b/arch/arm/configs/eukrea_cpuimx27_defconfig index 42d2666206..4a5eba5426 100644 --- a/arch/arm/configs/eukrea_cpuimx27_defconfig +++ b/arch/arm/configs/eukrea_cpuimx27_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Eukrea CPUIMX27" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARM926EJS=y +CONFIG_CPU_ARM926T=y # CONFIG_MACH_MX1ADS is not set # CONFIG_MACH_SCB9328 is not set # CONFIG_MACH_PCM038 is not set diff --git a/arch/arm/configs/freescale_mx25_3stack_defconfig b/arch/arm/configs/freescale_mx25_3stack_defconfig index 940fed2934..62ec009d91 100644 --- a/arch/arm/configs/freescale_mx25_3stack_defconfig +++ b/arch/arm/configs/freescale_mx25_3stack_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Freescale MX25 3Stack" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARM926EJS=y +CONFIG_CPU_ARM926T=y # CONFIG_MACH_MX1ADS is not set # CONFIG_MACH_SCB9328 is not set # CONFIG_MACH_PCM038 is not set diff --git a/arch/arm/configs/mmccpu_defconfig b/arch/arm/configs/mmccpu_defconfig index f6f9c398f1..af6e3cd4de 100644 --- a/arch/arm/configs/mmccpu_defconfig +++ b/arch/arm/configs/mmccpu_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Bucyrus MMC-CPU" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARM926EJS=y +CONFIG_CPU_ARM926T=y CONFIG_ARCH_AT91=y CONFIG_ARCH_AT91SAM9263=y # CONFIG_MACH_MX1ADS is not set diff --git a/arch/arm/configs/mx21ads_defconfig b/arch/arm/configs/mx21ads_defconfig index 1bc2784ff5..8c1a77ed12 100644 --- a/arch/arm/configs/mx21ads_defconfig +++ b/arch/arm/configs/mx21ads_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Freescale i.MX21 ADS" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARM926EJS=y +CONFIG_CPU_ARM926T=y # CONFIG_MACH_MX1ADS is not set # CONFIG_MACH_SCB9328 is not set # CONFIG_MACH_PCM038 is not set diff --git a/arch/arm/configs/mx27ads_defconfig b/arch/arm/configs/mx27ads_defconfig index 2d40eab623..79f6e9fbf1 100644 --- a/arch/arm/configs/mx27ads_defconfig +++ b/arch/arm/configs/mx27ads_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Freescale i.MX27 ADS" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARM926EJS=y +CONFIG_CPU_ARM926T=y CONFIG_ARCH_IMX=y CONFIG_ARCH_IMX27=y # CONFIG_MACH_MX1ADS is not set diff --git a/arch/arm/configs/netx_nxdb500_defconfig b/arch/arm/configs/netx_nxdb500_defconfig index 248fce0eec..b84f6a39cc 100644 --- a/arch/arm/configs/netx_nxdb500_defconfig +++ b/arch/arm/configs/netx_nxdb500_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Hilscher Netx nxdb500" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARM926EJS=y +CONFIG_CPU_ARM926T=y CONFIG_ARCH_NETX=y # CONFIG_MACH_MX1ADS is not set # CONFIG_MACH_SCB9328 is not set diff --git a/arch/arm/configs/omap3430_sdp3430_per_uart_defconfig b/arch/arm/configs/omap3430_sdp3430_per_uart_defconfig index f4244e3877..0c6d398508 100644 --- a/arch/arm/configs/omap3430_sdp3430_per_uart_defconfig +++ b/arch/arm/configs/omap3430_sdp3430_per_uart_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Texas Instrument's SDP343x" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARMCORTEXA8=y +CONFIG_CPU_V7=y CONFIG_ARCH_OMAP=y # CONFIG_MACH_MX1ADS is not set # CONFIG_MACH_SCB9328 is not set @@ -42,7 +42,7 @@ CONFIG_MACH_OMAP343xSDP=y # CONFIG_CMDLINE_TAG is not set # CONFIG_SETUP_MEMORY_TAGS is not set # CONFIG_INITRD_TAG is not set -# CONFIG_ARMCORTEXA8_DCACHE_SKIP is not set +# CONFIG_CPU_V7_DCACHE_SKIP is not set CONFIG_HAS_KALLSYMS=y CONFIG_HAS_MODULES=y # CONFIG_CMD_MEMORY is not set diff --git a/arch/arm/configs/omap3530_beagle_per_uart_defconfig b/arch/arm/configs/omap3530_beagle_per_uart_defconfig index b64e631682..f72b10c543 100644 --- a/arch/arm/configs/omap3530_beagle_per_uart_defconfig +++ b/arch/arm/configs/omap3530_beagle_per_uart_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Texas Instrument's Beagle" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARMCORTEXA8=y +CONFIG_CPU_V7=y CONFIG_ARCH_OMAP=y # CONFIG_MACH_MX1ADS is not set # CONFIG_MACH_SCB9328 is not set @@ -43,7 +43,7 @@ CONFIG_MACH_BEAGLE=y # CONFIG_CMDLINE_TAG is not set # CONFIG_SETUP_MEMORY_TAGS is not set # CONFIG_INITRD_TAG is not set -# CONFIG_ARMCORTEXA8_DCACHE_SKIP is not set +# CONFIG_CPU_V7_DCACHE_SKIP is not set CONFIG_HAS_KALLSYMS=y CONFIG_HAS_MODULES=y # CONFIG_CMD_MEMORY is not set diff --git a/arch/arm/configs/pca100_defconfig b/arch/arm/configs/pca100_defconfig index ea13596fde..25ca7ed2fe 100644 --- a/arch/arm/configs/pca100_defconfig +++ b/arch/arm/configs/pca100_defconfig @@ -7,7 +7,7 @@ CONFIG_BOARDINFO="Phytec phyCard-i.MX27" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARM926EJS=y +CONFIG_CPU_ARM926T=y # CONFIG_MACH_MX1ADS is not set # CONFIG_MACH_SCB9328 is not set # CONFIG_MACH_PCM038 is not set diff --git a/arch/arm/configs/pcm038_defconfig b/arch/arm/configs/pcm038_defconfig index ffe6fe8ad4..afc68314e3 100644 --- a/arch/arm/configs/pcm038_defconfig +++ b/arch/arm/configs/pcm038_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Phytec phyCORE-i.MX27" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARM926EJS=y +CONFIG_CPU_ARM926T=y # CONFIG_MACH_MX1ADS is not set # CONFIG_MACH_SCB9328 is not set CONFIG_MACH_PCM038=y diff --git a/arch/arm/configs/pm9263_defconfig b/arch/arm/configs/pm9263_defconfig index a443b95637..9c9a0b7639 100644 --- a/arch/arm/configs/pm9263_defconfig +++ b/arch/arm/configs/pm9263_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Ronetix PM9263" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARM926EJS=y +CONFIG_CPU_ARM926T=y CONFIG_ARCH_AT91=y CONFIG_ARCH_AT91SAM9263=y # CONFIG_MACH_MX1ADS is not set diff --git a/arch/arm/configs/scb9328_defconfig b/arch/arm/configs/scb9328_defconfig index d674acb839..71a53a7b29 100644 --- a/arch/arm/configs/scb9328_defconfig +++ b/arch/arm/configs/scb9328_defconfig @@ -8,7 +8,7 @@ CONFIG_BOARDINFO="Synertronixx scb9328" # CONFIG_BOARD_LINKER_SCRIPT is not set CONFIG_GENERIC_LINKER_SCRIPT=y CONFIG_ARM=y -CONFIG_ARM920T=y +CONFIG_CPU_ARM920T=y CONFIG_ARCH_IMX=y CONFIG_ARCH_IMX1=y # CONFIG_MACH_MX1ADS is not set diff --git a/arch/arm/cpu/Kconfig b/arch/arm/cpu/Kconfig new file mode 100644 index 0000000000..f89cce997b --- /dev/null +++ b/arch/arm/cpu/Kconfig @@ -0,0 +1,52 @@ +comment "Processor Type" + +config CPU_32 + bool + default y + +# Select CPU types depending on the architecture selected. This selects +# which CPUs we support in the kernel image, and the compiler instruction +# optimiser behaviour. + +# ARM920T +config CPU_ARM920T + bool + select CPU_32v4T + help + The ARM920T is licensed to be produced by numerous vendors, + and is used in the Maverick EP9312 and the Samsung S3C2410. + + More information on the Maverick EP9312 at + . + + Say Y if you want support for the ARM920T processor. + Otherwise, say N. + + +# ARM926T +config CPU_ARM926T + bool + select CPU_32v5 + help + This is a variant of the ARM920. It has slightly different + instruction sequences for cache and TLB operations. Curiously, + there is no documentation on it at the ARM corporate website. + + Say Y if you want support for the ARM926T processor. + Otherwise, say N. + +# ARMv7 +config CPU_V7 + bool + select CPU_32v7 + +# Figure out what processor architecture version we should be using. +# This defines the compiler instruction set which depends on the machine type. +config CPU_32v4T + bool + +config CPU_32v5 + bool + +config CPU_32v7 + bool diff --git a/arch/arm/cpu/Makefile b/arch/arm/cpu/Makefile index 3b6a6d7cc6..538ab57ae1 100644 --- a/arch/arm/cpu/Makefile +++ b/arch/arm/cpu/Makefile @@ -4,9 +4,9 @@ obj-y += interrupts.o # # Any variants can be called as start-armxyz.S # -obj-$(CONFIG_ARM920T) += start-arm.o -obj-$(CONFIG_ARM926EJS) += start-arm.o -obj-$(CONFIG_ARMCORTEXA8) += start-arm.o +obj-$(CONFIG_CPU_ARM920T) += start-arm.o +obj-$(CONFIG_CPU_ARM926T) += start-arm.o +obj-$(CONFIG_CPU_V7) += start-arm.o obj-$(CONFIG_ARCH_IMX31) += start-arm.o obj-$(CONFIG_ARCH_IMX35) += start-arm.o obj-$(CONFIG_CMD_ARM_CPUINFO) += cpuinfo.o diff --git a/arch/arm/cpu/start-arm.S b/arch/arm/cpu/start-arm.S index 408944ab29..8ad03e410a 100644 --- a/arch/arm/cpu/start-arm.S +++ b/arch/arm/cpu/start-arm.S @@ -131,7 +131,7 @@ reset: bl arch_init_lowlevel #endif -#ifdef CONFIG_ARMCORTEXA8 +#ifdef CONFIG_CPU_V7 /* * Invalidate v7 I/D caches */ @@ -139,7 +139,7 @@ reset: mcr p15, 0, r0, c8, c7, 0 /* invalidate TLBs */ mcr p15, 0, r0, c7, c5, 0 /* invalidate icache */ /* Invalidate all Dcaches */ -#ifndef CONFIG_ARMCORTEXA8_DCACHE_SKIP +#ifndef CONFIG_CPU_V7_DCACHE_SKIP /* If Arch specific ROM code SMI handling does not exist */ mrc p15, 1, r0, c0, c0, 1 /* read clidr */ ands r3, r0, #0x7000000 /* extract loc from clidr */ @@ -180,7 +180,7 @@ finished_inval: mov r10, #0 /* swith back to cache level 0 */ mcr p15, 2, r10, c0, c0, 0 /* select current cache level in cssr */ isb -#endif /* CONFIG_ARMCORTEXA8_DCACHE_SKIP */ +#endif /* CONFIG_CPU_V7_DCACHE_SKIP */ #else /* diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig index ecada4afa8..923ce0bd6f 100644 --- a/arch/arm/mach-at91/Kconfig +++ b/arch/arm/mach-at91/Kconfig @@ -17,11 +17,11 @@ choice config ARCH_AT91SAM9260 bool "AT91SAM9260" - select ARM926EJS + select CPU_ARM926T config ARCH_AT91SAM9263 bool "AT91SAM9263" - select ARM926EJS + select CPU_ARM926T select MACH_HAS_LOWLEVEL_INIT endchoice diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index ef9dbb05ed..6585c878bf 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -36,20 +36,20 @@ choice config ARCH_IMX1 bool "i.MX1" - select ARM920T + select CPU_ARM920T config ARCH_IMX21 bool "i.MX21" - select ARM926EJS + select CPU_ARM926T config ARCH_IMX25 bool "i.MX25" - select ARM926EJS + select CPU_ARM926T select ARCH_HAS_FEC_IMX config ARCH_IMX27 bool "i.MX27" - select ARM926EJS + select CPU_ARM926T select ARCH_HAS_FEC_IMX config ARCH_IMX31 diff --git a/arch/arm/mach-omap/Kconfig b/arch/arm/mach-omap/Kconfig index c7a0aad937..99b9f9d973 100644 --- a/arch/arm/mach-omap/Kconfig +++ b/arch/arm/mach-omap/Kconfig @@ -31,7 +31,7 @@ choice config ARCH_OMAP3 bool "OMAP3" - select ARMCORTEXA8 + select CPU_V7 select ARCH_HAS_LOWLEVEL_INIT select OMAP_CLOCK_SOURCE_S32K help -- cgit v1.2.3