[PATCH 1/7] arm: introduce CPU CONFIG from linux
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Mon Nov 2 13:51:25 EST 2009
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
---
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 6fa11ee..1ce216a 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 9f0f7ec..f471291 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 5152c74..e973a30 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 2667f46..5e49aab 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 bb1e607..f198e5a 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 95436e3..b1f8b30 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 42d2666..4a5eba5 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 940fed2..62ec009 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 f6f9c39..af6e3cd 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 1bc2784..8c1a77e 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 2d40eab..79f6e9f 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 248fce0..b84f6a3 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 f4244e3..0c6d398 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 b64e631..f72b10c 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 ea13596..25ca7ed 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 ffe6fe8..afc6831 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 a443b95..9c9a0b7 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 d674acb..71a53a7 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 0000000..f89cce9
--- /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
+ <http://linuxdevices.com/products/PD2382866068.html>.
+
+ 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 3b6a6d7..538ab57 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 408944a..8ad03e4 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 ecada4a..923ce0b 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 ef9dbb0..6585c87 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 c7a0aad..99b9f9d 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
--
1.6.5
More information about the u-boot-v2
mailing list