From: Russell King - ARM Linux <linux@arm.linux.org.uk> To: linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org Subject: [PATCH 04/14] ARM: v6k: introduce CPU_V6K option Date: Mon, 17 Jan 2011 19:22:21 +0000 [thread overview] Message-ID: <E1Peuej-0003SV-Dn@rmk-PC.arm.linux.org.uk> (raw) In-Reply-To: <20110117192050.GE23331@n2100.arm.linux.org.uk> Introduce a CPU_V6K configuration option for platforms to select if they have a V6K CPU core. This allows us to identify whether we need to support ARMv6 CPUs without the V6K SMP extensions at build time. Currently CPU_V6K is just an alias for CPU_V6, and all places which reference CPU_V6 are replaced by (CPU_V6 || CPU_V6K). Select CPU_V6K from platforms which are known to be V6K-only. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> --- arch/arm/Kconfig | 10 ++++---- arch/arm/Makefile | 1 + arch/arm/boot/compressed/head.S | 2 +- arch/arm/boot/compressed/misc.c | 2 +- arch/arm/include/asm/cacheflush.h | 5 ++- arch/arm/include/asm/proc-fns.h | 2 +- arch/arm/kernel/debug.S | 2 +- arch/arm/kernel/perf_event_v6.c | 4 +- arch/arm/mm/Kconfig | 47 +++++++++++++++++++++++------------- arch/arm/mm/Makefile | 1 + arch/arm/mm/mmap.c | 2 +- 11 files changed, 47 insertions(+), 31 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 5cff165..95ba92f 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -24,7 +24,7 @@ config ARM select HAVE_PERF_EVENTS select PERF_USE_VMALLOC select HAVE_REGS_AND_STACK_ACCESS_API - select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V7)) + select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7)) select HAVE_C_RECORDMCOUNT select HAVE_GENERIC_HARDIRQS select HAVE_SPARSE_IRQ @@ -1048,7 +1048,7 @@ config XSCALE_PMU default y config CPU_HAS_PMU - depends on (CPU_V6 || CPU_V7 || XSCALE_PMU) && \ + depends on (CPU_V6 || CPU_V6K || CPU_V7 || XSCALE_PMU) && \ (!ARCH_OMAP3 || OMAP3_EMU) default y bool @@ -1064,7 +1064,7 @@ endif config ARM_ERRATA_411920 bool "ARM errata: Invalidation of the Instruction Cache operation can fail" - depends on CPU_V6 + depends on CPU_V6 || CPU_V6K help Invalidation of the Instruction Cache operation can fail. This erratum is present in 1136 (before r1p4), 1156 and 1176. @@ -1361,7 +1361,7 @@ config HZ config THUMB2_KERNEL bool "Compile the kernel in Thumb-2 mode (EXPERIMENTAL)" - depends on CPU_V7 && !CPU_V6 && EXPERIMENTAL + depends on CPU_V7 && !CPU_V6 && !CPU_V6K && EXPERIMENTAL select AEABI select ARM_ASM_UNIFIED help @@ -1852,7 +1852,7 @@ config FPE_FASTFPE config VFP bool "VFP-format floating point maths" - depends on CPU_V6 || CPU_ARM926T || CPU_V7 || CPU_FEROCEON + depends on CPU_V6 || CPU_V6K || CPU_ARM926T || CPU_V7 || CPU_FEROCEON help Say Y to include VFP support code in the kernel. This is needed if your hardware includes a VFP unit. diff --git a/arch/arm/Makefile b/arch/arm/Makefile index c22c1ad..9c43052 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -89,6 +89,7 @@ tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) tune-$(CONFIG_CPU_XSC3) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale tune-$(CONFIG_CPU_FEROCEON) :=$(call cc-option,-mtune=marvell-f,-mtune=xscale) tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) +tune-$(CONFIG_CPU_V6K) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) ifeq ($(CONFIG_AEABI),y) CFLAGS_ABI :=-mabi=aapcs-linux -mno-thumb-interwork diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 7193884..91f20f0 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -21,7 +21,7 @@ #if defined(CONFIG_DEBUG_ICEDCC) -#ifdef CONFIG_CPU_V6 +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) .macro loadsp, rb, tmp .endm .macro writeb, ch, rb diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c index e653a6d..4657e87 100644 --- a/arch/arm/boot/compressed/misc.c +++ b/arch/arm/boot/compressed/misc.c @@ -36,7 +36,7 @@ extern void error(char *x); #ifdef CONFIG_DEBUG_ICEDCC -#ifdef CONFIG_CPU_V6 +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) static void icedcc_putc(int ch) { diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h index 3acd8fa..7d0614f 100644 --- a/arch/arm/include/asm/cacheflush.h +++ b/arch/arm/include/asm/cacheflush.h @@ -116,7 +116,7 @@ # define MULTI_CACHE 1 #endif -#if defined(CONFIG_CPU_V6) +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) //# ifdef _CACHE # define MULTI_CACHE 1 //# else @@ -316,7 +316,8 @@ extern void copy_to_user_page(struct vm_area_struct *, struct page *, * Optimized __flush_icache_all for the common cases. Note that UP ARMv7 * will fall through to use __flush_icache_all_generic. */ -#if (defined(CONFIG_CPU_V7) && defined(CONFIG_CPU_V6)) || \ +#if (defined(CONFIG_CPU_V7) && \ + (defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K))) || \ defined(CONFIG_SMP_ON_UP) #define __flush_icache_preferred __cpuc_flush_icache_all #elif __LINUX_ARM_ARCH__ >= 7 && defined(CONFIG_SMP) diff --git a/arch/arm/include/asm/proc-fns.h b/arch/arm/include/asm/proc-fns.h index 8fdae9b..296ca47 100644 --- a/arch/arm/include/asm/proc-fns.h +++ b/arch/arm/include/asm/proc-fns.h @@ -231,7 +231,7 @@ # endif #endif -#ifdef CONFIG_CPU_V6 +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) # ifdef CPU_NAME # undef MULTI_CPU # define MULTI_CPU diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S index a0f0752..d2d983b 100644 --- a/arch/arm/kernel/debug.S +++ b/arch/arm/kernel/debug.S @@ -25,7 +25,7 @@ .macro addruart, rp, rv .endm -#if defined(CONFIG_CPU_V6) +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) .macro senduart, rd, rx mcr p14, 0, \rd, c0, c5, 0 diff --git a/arch/arm/kernel/perf_event_v6.c b/arch/arm/kernel/perf_event_v6.c index c058bfc..6fc2d22 100644 --- a/arch/arm/kernel/perf_event_v6.c +++ b/arch/arm/kernel/perf_event_v6.c @@ -30,7 +30,7 @@ * enable the interrupt. */ -#ifdef CONFIG_CPU_V6 +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) enum armv6_perf_types { ARMV6_PERFCTR_ICACHE_MISS = 0x0, ARMV6_PERFCTR_IBUF_STALL = 0x1, @@ -669,4 +669,4 @@ static const struct arm_pmu *__init armv6mpcore_pmu_init(void) { return NULL; } -#endif /* CONFIG_CPU_V6 */ +#endif /* CONFIG_CPU_V6 || CONFIG_CPU_V6K */ diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index 9d30c6f..559e933 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig @@ -402,16 +402,18 @@ config CPU_V6 select CPU_TLB_V6 if MMU # ARMv6k -config CPU_32v6K - bool "Support ARM V6K processor extensions" if !SMP - depends on CPU_V6 || CPU_V7 - default y if SMP && !(ARCH_MX3 || ARCH_OMAP2) - help - Say Y here if your ARMv6 processor supports the 'K' extension. - This enables the kernel to use some instructions not present - on previous processors, and as such a kernel build with this - enabled will not boot on processors with do not support these - instructions. +config CPU_V6K + bool "Support ARM V6K processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX || ARCH_DOVE + select CPU_32v6 + select CPU_32v6K if !ARCH_OMAP2 + select CPU_ABRT_EV6 + select CPU_PABRT_V6 + select CPU_CACHE_V6 + select CPU_CACHE_VIPT + select CPU_CP15_MMU + select CPU_HAS_ASID if MMU + select CPU_COPY_V6 if MMU + select CPU_TLB_V6 if MMU # ARMv7 config CPU_V7 @@ -453,6 +455,17 @@ config CPU_32v6 bool select TLS_REG_EMUL if !CPU_32v6K && !MMU +config CPU_32v6K + bool "Support ARM V6K processor extensions" if !SMP + depends on CPU_V6 || CPU_V6K || CPU_V7 + default y if SMP && !(ARCH_MX3 || ARCH_OMAP2) + help + Say Y here if your ARMv6 processor supports the 'K' extension. + This enables the kernel to use some instructions not present + on previous processors, and as such a kernel build with this + enabled will not boot on processors with do not support these + instructions. + config CPU_32v7 bool @@ -623,7 +636,7 @@ comment "Processor Features" config ARM_THUMB bool "Support Thumb user binaries" - depends on CPU_ARM720T || CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || CPU_ARM1020 || CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_V6 || CPU_V7 || CPU_FEROCEON + depends on CPU_ARM720T || CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || CPU_ARM1020 || CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_V6 || CPU_V6K || CPU_V7 || CPU_FEROCEON default y help Say Y if you want to include kernel support for running user space @@ -681,7 +694,7 @@ config CPU_BIG_ENDIAN config CPU_ENDIAN_BE8 bool depends on CPU_BIG_ENDIAN - default CPU_V6 || CPU_V7 + default CPU_V6 || CPU_V6K || CPU_V7 help Support for the BE-8 (big-endian) mode on ARMv6 and ARMv7 processors. @@ -747,7 +760,7 @@ config CPU_CACHE_ROUND_ROBIN config CPU_BPREDICT_DISABLE bool "Disable branch prediction" - depends on CPU_ARM1020 || CPU_V6 || CPU_MOHAWK || CPU_XSC3 || CPU_V7 || CPU_FA526 + depends on CPU_ARM1020 || CPU_V6 || CPU_V6K || CPU_MOHAWK || CPU_XSC3 || CPU_V7 || CPU_FA526 help Say Y here to disable branch prediction. If unsure, say N. @@ -767,7 +780,7 @@ config NEEDS_SYSCALL_FOR_CMPXCHG config DMA_CACHE_RWFO bool "Enable read/write for ownership DMA cache maintenance" - depends on CPU_V6 && SMP + depends on (CPU_V6 || CPU_V6K) && SMP default y help The Snoop Control Unit on ARM11MPCore does not detect the @@ -823,7 +836,7 @@ config CACHE_L2X0 config CACHE_PL310 bool depends on CACHE_L2X0 - default y if CPU_V7 && !CPU_V6 + default y if CPU_V7 && !(CPU_V6 || CPU_V6K) help This option enables optimisations for the PL310 cache controller. @@ -851,10 +864,10 @@ config ARM_L1_CACHE_SHIFT default 5 config ARM_DMA_MEM_BUFFERABLE - bool "Use non-cacheable memory for DMA" if CPU_V6 && !CPU_V7 + bool "Use non-cacheable memory for DMA" if (CPU_V6 || CPU_V6K) && !CPU_V7 depends on !(MACH_REALVIEW_PB1176 || REALVIEW_EB_ARM11MP || \ MACH_REALVIEW_PB11MP) - default y if CPU_V6 || CPU_V7 + default y if CPU_V6 || CPU_V6K || CPU_V7 help Historically, the kernel has used strongly ordered mappings to provide DMA coherent memory. With the advent of ARMv7, mapping diff --git a/arch/arm/mm/Makefile b/arch/arm/mm/Makefile index 00d74a0..bca7e61 100644 --- a/arch/arm/mm/Makefile +++ b/arch/arm/mm/Makefile @@ -90,6 +90,7 @@ obj-$(CONFIG_CPU_XSC3) += proc-xsc3.o obj-$(CONFIG_CPU_MOHAWK) += proc-mohawk.o obj-$(CONFIG_CPU_FEROCEON) += proc-feroceon.o obj-$(CONFIG_CPU_V6) += proc-v6.o +obj-$(CONFIG_CPU_V6K) += proc-v6.o obj-$(CONFIG_CPU_V7) += proc-v7.o AFLAGS_proc-v6.o :=-Wa,-march=armv6 diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c index b0a9830..afe209e 100644 --- a/arch/arm/mm/mmap.c +++ b/arch/arm/mm/mmap.c @@ -31,7 +31,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, struct mm_struct *mm = current->mm; struct vm_area_struct *vma; unsigned long start_addr; -#ifdef CONFIG_CPU_V6 +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) unsigned int cache_type; int do_align = 0, aliasing = 0; -- 1.6.2.5
WARNING: multiple messages have this Message-ID (diff)
From: linux@arm.linux.org.uk (Russell King - ARM Linux) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 04/14] ARM: v6k: introduce CPU_V6K option Date: Mon, 17 Jan 2011 19:22:21 +0000 [thread overview] Message-ID: <E1Peuej-0003SV-Dn@rmk-PC.arm.linux.org.uk> (raw) In-Reply-To: <20110117192050.GE23331@n2100.arm.linux.org.uk> Introduce a CPU_V6K configuration option for platforms to select if they have a V6K CPU core. This allows us to identify whether we need to support ARMv6 CPUs without the V6K SMP extensions at build time. Currently CPU_V6K is just an alias for CPU_V6, and all places which reference CPU_V6 are replaced by (CPU_V6 || CPU_V6K). Select CPU_V6K from platforms which are known to be V6K-only. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> --- arch/arm/Kconfig | 10 ++++---- arch/arm/Makefile | 1 + arch/arm/boot/compressed/head.S | 2 +- arch/arm/boot/compressed/misc.c | 2 +- arch/arm/include/asm/cacheflush.h | 5 ++- arch/arm/include/asm/proc-fns.h | 2 +- arch/arm/kernel/debug.S | 2 +- arch/arm/kernel/perf_event_v6.c | 4 +- arch/arm/mm/Kconfig | 47 +++++++++++++++++++++++------------- arch/arm/mm/Makefile | 1 + arch/arm/mm/mmap.c | 2 +- 11 files changed, 47 insertions(+), 31 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 5cff165..95ba92f 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -24,7 +24,7 @@ config ARM select HAVE_PERF_EVENTS select PERF_USE_VMALLOC select HAVE_REGS_AND_STACK_ACCESS_API - select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V7)) + select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7)) select HAVE_C_RECORDMCOUNT select HAVE_GENERIC_HARDIRQS select HAVE_SPARSE_IRQ @@ -1048,7 +1048,7 @@ config XSCALE_PMU default y config CPU_HAS_PMU - depends on (CPU_V6 || CPU_V7 || XSCALE_PMU) && \ + depends on (CPU_V6 || CPU_V6K || CPU_V7 || XSCALE_PMU) && \ (!ARCH_OMAP3 || OMAP3_EMU) default y bool @@ -1064,7 +1064,7 @@ endif config ARM_ERRATA_411920 bool "ARM errata: Invalidation of the Instruction Cache operation can fail" - depends on CPU_V6 + depends on CPU_V6 || CPU_V6K help Invalidation of the Instruction Cache operation can fail. This erratum is present in 1136 (before r1p4), 1156 and 1176. @@ -1361,7 +1361,7 @@ config HZ config THUMB2_KERNEL bool "Compile the kernel in Thumb-2 mode (EXPERIMENTAL)" - depends on CPU_V7 && !CPU_V6 && EXPERIMENTAL + depends on CPU_V7 && !CPU_V6 && !CPU_V6K && EXPERIMENTAL select AEABI select ARM_ASM_UNIFIED help @@ -1852,7 +1852,7 @@ config FPE_FASTFPE config VFP bool "VFP-format floating point maths" - depends on CPU_V6 || CPU_ARM926T || CPU_V7 || CPU_FEROCEON + depends on CPU_V6 || CPU_V6K || CPU_ARM926T || CPU_V7 || CPU_FEROCEON help Say Y to include VFP support code in the kernel. This is needed if your hardware includes a VFP unit. diff --git a/arch/arm/Makefile b/arch/arm/Makefile index c22c1ad..9c43052 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -89,6 +89,7 @@ tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) tune-$(CONFIG_CPU_XSC3) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale tune-$(CONFIG_CPU_FEROCEON) :=$(call cc-option,-mtune=marvell-f,-mtune=xscale) tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) +tune-$(CONFIG_CPU_V6K) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) ifeq ($(CONFIG_AEABI),y) CFLAGS_ABI :=-mabi=aapcs-linux -mno-thumb-interwork diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 7193884..91f20f0 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -21,7 +21,7 @@ #if defined(CONFIG_DEBUG_ICEDCC) -#ifdef CONFIG_CPU_V6 +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) .macro loadsp, rb, tmp .endm .macro writeb, ch, rb diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c index e653a6d..4657e87 100644 --- a/arch/arm/boot/compressed/misc.c +++ b/arch/arm/boot/compressed/misc.c @@ -36,7 +36,7 @@ extern void error(char *x); #ifdef CONFIG_DEBUG_ICEDCC -#ifdef CONFIG_CPU_V6 +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) static void icedcc_putc(int ch) { diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h index 3acd8fa..7d0614f 100644 --- a/arch/arm/include/asm/cacheflush.h +++ b/arch/arm/include/asm/cacheflush.h @@ -116,7 +116,7 @@ # define MULTI_CACHE 1 #endif -#if defined(CONFIG_CPU_V6) +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) //# ifdef _CACHE # define MULTI_CACHE 1 //# else @@ -316,7 +316,8 @@ extern void copy_to_user_page(struct vm_area_struct *, struct page *, * Optimized __flush_icache_all for the common cases. Note that UP ARMv7 * will fall through to use __flush_icache_all_generic. */ -#if (defined(CONFIG_CPU_V7) && defined(CONFIG_CPU_V6)) || \ +#if (defined(CONFIG_CPU_V7) && \ + (defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K))) || \ defined(CONFIG_SMP_ON_UP) #define __flush_icache_preferred __cpuc_flush_icache_all #elif __LINUX_ARM_ARCH__ >= 7 && defined(CONFIG_SMP) diff --git a/arch/arm/include/asm/proc-fns.h b/arch/arm/include/asm/proc-fns.h index 8fdae9b..296ca47 100644 --- a/arch/arm/include/asm/proc-fns.h +++ b/arch/arm/include/asm/proc-fns.h @@ -231,7 +231,7 @@ # endif #endif -#ifdef CONFIG_CPU_V6 +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) # ifdef CPU_NAME # undef MULTI_CPU # define MULTI_CPU diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S index a0f0752..d2d983b 100644 --- a/arch/arm/kernel/debug.S +++ b/arch/arm/kernel/debug.S @@ -25,7 +25,7 @@ .macro addruart, rp, rv .endm -#if defined(CONFIG_CPU_V6) +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) .macro senduart, rd, rx mcr p14, 0, \rd, c0, c5, 0 diff --git a/arch/arm/kernel/perf_event_v6.c b/arch/arm/kernel/perf_event_v6.c index c058bfc..6fc2d22 100644 --- a/arch/arm/kernel/perf_event_v6.c +++ b/arch/arm/kernel/perf_event_v6.c @@ -30,7 +30,7 @@ * enable the interrupt. */ -#ifdef CONFIG_CPU_V6 +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) enum armv6_perf_types { ARMV6_PERFCTR_ICACHE_MISS = 0x0, ARMV6_PERFCTR_IBUF_STALL = 0x1, @@ -669,4 +669,4 @@ static const struct arm_pmu *__init armv6mpcore_pmu_init(void) { return NULL; } -#endif /* CONFIG_CPU_V6 */ +#endif /* CONFIG_CPU_V6 || CONFIG_CPU_V6K */ diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index 9d30c6f..559e933 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig @@ -402,16 +402,18 @@ config CPU_V6 select CPU_TLB_V6 if MMU # ARMv6k -config CPU_32v6K - bool "Support ARM V6K processor extensions" if !SMP - depends on CPU_V6 || CPU_V7 - default y if SMP && !(ARCH_MX3 || ARCH_OMAP2) - help - Say Y here if your ARMv6 processor supports the 'K' extension. - This enables the kernel to use some instructions not present - on previous processors, and as such a kernel build with this - enabled will not boot on processors with do not support these - instructions. +config CPU_V6K + bool "Support ARM V6K processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX || ARCH_DOVE + select CPU_32v6 + select CPU_32v6K if !ARCH_OMAP2 + select CPU_ABRT_EV6 + select CPU_PABRT_V6 + select CPU_CACHE_V6 + select CPU_CACHE_VIPT + select CPU_CP15_MMU + select CPU_HAS_ASID if MMU + select CPU_COPY_V6 if MMU + select CPU_TLB_V6 if MMU # ARMv7 config CPU_V7 @@ -453,6 +455,17 @@ config CPU_32v6 bool select TLS_REG_EMUL if !CPU_32v6K && !MMU +config CPU_32v6K + bool "Support ARM V6K processor extensions" if !SMP + depends on CPU_V6 || CPU_V6K || CPU_V7 + default y if SMP && !(ARCH_MX3 || ARCH_OMAP2) + help + Say Y here if your ARMv6 processor supports the 'K' extension. + This enables the kernel to use some instructions not present + on previous processors, and as such a kernel build with this + enabled will not boot on processors with do not support these + instructions. + config CPU_32v7 bool @@ -623,7 +636,7 @@ comment "Processor Features" config ARM_THUMB bool "Support Thumb user binaries" - depends on CPU_ARM720T || CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || CPU_ARM1020 || CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_V6 || CPU_V7 || CPU_FEROCEON + depends on CPU_ARM720T || CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || CPU_ARM1020 || CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_V6 || CPU_V6K || CPU_V7 || CPU_FEROCEON default y help Say Y if you want to include kernel support for running user space @@ -681,7 +694,7 @@ config CPU_BIG_ENDIAN config CPU_ENDIAN_BE8 bool depends on CPU_BIG_ENDIAN - default CPU_V6 || CPU_V7 + default CPU_V6 || CPU_V6K || CPU_V7 help Support for the BE-8 (big-endian) mode on ARMv6 and ARMv7 processors. @@ -747,7 +760,7 @@ config CPU_CACHE_ROUND_ROBIN config CPU_BPREDICT_DISABLE bool "Disable branch prediction" - depends on CPU_ARM1020 || CPU_V6 || CPU_MOHAWK || CPU_XSC3 || CPU_V7 || CPU_FA526 + depends on CPU_ARM1020 || CPU_V6 || CPU_V6K || CPU_MOHAWK || CPU_XSC3 || CPU_V7 || CPU_FA526 help Say Y here to disable branch prediction. If unsure, say N. @@ -767,7 +780,7 @@ config NEEDS_SYSCALL_FOR_CMPXCHG config DMA_CACHE_RWFO bool "Enable read/write for ownership DMA cache maintenance" - depends on CPU_V6 && SMP + depends on (CPU_V6 || CPU_V6K) && SMP default y help The Snoop Control Unit on ARM11MPCore does not detect the @@ -823,7 +836,7 @@ config CACHE_L2X0 config CACHE_PL310 bool depends on CACHE_L2X0 - default y if CPU_V7 && !CPU_V6 + default y if CPU_V7 && !(CPU_V6 || CPU_V6K) help This option enables optimisations for the PL310 cache controller. @@ -851,10 +864,10 @@ config ARM_L1_CACHE_SHIFT default 5 config ARM_DMA_MEM_BUFFERABLE - bool "Use non-cacheable memory for DMA" if CPU_V6 && !CPU_V7 + bool "Use non-cacheable memory for DMA" if (CPU_V6 || CPU_V6K) && !CPU_V7 depends on !(MACH_REALVIEW_PB1176 || REALVIEW_EB_ARM11MP || \ MACH_REALVIEW_PB11MP) - default y if CPU_V6 || CPU_V7 + default y if CPU_V6 || CPU_V6K || CPU_V7 help Historically, the kernel has used strongly ordered mappings to provide DMA coherent memory. With the advent of ARMv7, mapping diff --git a/arch/arm/mm/Makefile b/arch/arm/mm/Makefile index 00d74a0..bca7e61 100644 --- a/arch/arm/mm/Makefile +++ b/arch/arm/mm/Makefile @@ -90,6 +90,7 @@ obj-$(CONFIG_CPU_XSC3) += proc-xsc3.o obj-$(CONFIG_CPU_MOHAWK) += proc-mohawk.o obj-$(CONFIG_CPU_FEROCEON) += proc-feroceon.o obj-$(CONFIG_CPU_V6) += proc-v6.o +obj-$(CONFIG_CPU_V6K) += proc-v6.o obj-$(CONFIG_CPU_V7) += proc-v7.o AFLAGS_proc-v6.o :=-Wa,-march=armv6 diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c index b0a9830..afe209e 100644 --- a/arch/arm/mm/mmap.c +++ b/arch/arm/mm/mmap.c @@ -31,7 +31,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, struct mm_struct *mm = current->mm; struct vm_area_struct *vma; unsigned long start_addr; -#ifdef CONFIG_CPU_V6 +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) unsigned int cache_type; int do_align = 0, aliasing = 0; -- 1.6.2.5
next prev parent reply other threads:[~2011-01-17 19:30 UTC|newest] Thread overview: 254+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-01-17 19:20 [PATCH 00/14] Fix issues with ARMv6+v6k+v7 kernels Russell King - ARM Linux 2011-01-17 19:20 ` Russell King - ARM Linux 2011-01-17 19:21 ` [PATCH 01/14] ARM: bitops: ensure set/clear/change bitops take a word-aligned pointer Russell King - ARM Linux 2011-01-17 19:21 ` Russell King - ARM Linux 2011-01-18 6:00 ` Nicolas Pitre 2011-01-18 6:00 ` Nicolas Pitre 2011-01-18 14:30 ` Russell King - ARM Linux 2011-01-18 14:30 ` Russell King - ARM Linux 2011-01-18 18:20 ` Nicolas Pitre 2011-01-18 18:20 ` Nicolas Pitre 2011-01-18 15:11 ` Catalin Marinas 2011-01-18 15:11 ` Catalin Marinas 2011-01-25 19:50 ` Tony Lindgren 2011-01-25 19:50 ` Tony Lindgren 2011-01-17 19:21 ` [PATCH 02/14] ARM: bitops: switch set/clear/change bitops to use ldrex/strex Russell King - ARM Linux 2011-01-17 19:21 ` Russell King - ARM Linux 2011-01-18 5:42 ` Nicolas Pitre 2011-01-18 5:42 ` Nicolas Pitre 2011-01-23 0:16 ` Russell King - ARM Linux 2011-01-23 0:16 ` Russell King - ARM Linux 2011-01-23 4:44 ` Nicolas Pitre 2011-01-23 4:44 ` Nicolas Pitre 2011-01-23 9:35 ` Russell King - ARM Linux 2011-01-23 9:35 ` Russell King - ARM Linux 2011-01-24 8:38 ` Poddar, Sourav 2011-01-24 8:38 ` Poddar, Sourav 2011-01-24 8:57 ` Poddar, Sourav 2011-01-24 8:57 ` Poddar, Sourav 2011-01-24 10:28 ` Russell King - ARM Linux 2011-01-24 10:28 ` Russell King - ARM Linux 2011-01-24 13:47 ` Poddar, Sourav 2011-01-24 13:47 ` Poddar, Sourav 2011-01-24 14:11 ` Russell King - ARM Linux 2011-01-24 14:11 ` Russell King - ARM Linux 2011-01-24 14:54 ` Poddar, Sourav 2011-01-24 14:54 ` Poddar, Sourav 2011-01-24 15:00 ` Russell King - ARM Linux 2011-01-24 15:00 ` Russell King - ARM Linux 2011-01-25 13:57 ` Will Deacon 2011-01-25 13:57 ` Will Deacon 2011-01-25 14:11 ` Russell King - ARM Linux 2011-01-25 14:11 ` Russell King - ARM Linux 2011-01-25 14:19 ` Will Deacon 2011-01-25 14:19 ` Will Deacon [not found] ` <000601cbbc97$cc6955d0$653c0170$%deacon@arm.com> 2011-01-25 21:38 ` Nicolas Pitre 2011-01-25 21:38 ` Nicolas Pitre 2011-01-25 19:51 ` Tony Lindgren 2011-01-25 19:51 ` Tony Lindgren 2011-01-17 19:22 ` [PATCH 03/14] ARM: v6k: remove CPU_32v6K dependencies in asm/spinlock.h Russell King - ARM Linux 2011-01-17 19:22 ` Russell King - ARM Linux 2011-01-17 23:13 ` Tony Lindgren 2011-01-17 23:13 ` Tony Lindgren 2011-01-25 16:43 ` Dave Martin 2011-01-25 16:43 ` Dave Martin 2011-01-25 16:59 ` Russell King - ARM Linux 2011-01-25 16:59 ` Russell King - ARM Linux 2011-01-25 17:33 ` Dave Martin 2011-01-25 17:33 ` Dave Martin 2011-01-25 17:46 ` Russell King - ARM Linux 2011-01-25 17:46 ` Russell King - ARM Linux 2011-01-25 21:21 ` Nicolas Pitre 2011-01-25 21:21 ` Nicolas Pitre 2011-01-26 11:11 ` Dave Martin 2011-01-26 11:11 ` Dave Martin 2011-01-26 12:44 ` Russell King - ARM Linux 2011-01-26 12:44 ` Russell King - ARM Linux 2011-01-26 17:25 ` [PATCH] ARM: Avoid discarding sections that might have SMP_ON_UP fixups Dave P. Martin 2011-01-26 17:25 ` Dave P. Martin 2011-01-26 21:31 ` Nicolas Pitre 2011-01-26 21:31 ` Nicolas Pitre 2011-01-27 14:37 ` [PATCH v2] ARM: Avoid discarding sections that might have SMP_ON_UP fixups " Dave Martin 2011-01-27 14:37 ` Dave Martin 2011-01-27 16:46 ` Russell King - ARM Linux 2011-01-27 16:46 ` Russell King - ARM Linux 2011-02-09 14:22 ` [PATCH] ARM: Avoid discarding sections that might have " Russell King - ARM Linux 2011-02-09 14:22 ` Russell King - ARM Linux 2011-02-10 12:56 ` Russell King - ARM Linux 2011-02-10 12:56 ` Russell King - ARM Linux 2011-02-10 14:11 ` Dave Martin 2011-02-10 14:11 ` Dave Martin 2011-02-10 14:13 ` Dave Martin 2011-02-10 14:13 ` Dave Martin 2011-02-10 14:46 ` Russell King - ARM Linux 2011-02-10 14:46 ` Russell King - ARM Linux 2011-02-10 18:29 ` Dave Martin 2011-02-10 18:29 ` Dave Martin 2011-02-10 19:11 ` Russell King - ARM Linux 2011-02-10 19:11 ` Russell King - ARM Linux 2011-02-11 9:33 ` Dave Martin 2011-02-11 9:33 ` Dave Martin 2011-02-11 10:13 ` Russell King - ARM Linux 2011-02-11 10:13 ` Russell King - ARM Linux 2011-02-11 10:52 ` Dave Martin 2011-02-11 10:52 ` Dave Martin 2011-02-11 16:05 ` Russell King - ARM Linux 2011-02-11 16:05 ` Russell King - ARM Linux 2011-02-11 16:17 ` Dave Martin 2011-02-11 16:17 ` Dave Martin 2011-02-11 16:32 ` Russell King - ARM Linux 2011-02-11 16:32 ` Russell King - ARM Linux 2011-02-16 16:35 ` Dave Martin 2011-02-16 16:35 ` Dave Martin 2011-02-18 17:52 ` Dave Martin 2011-02-18 17:52 ` Dave Martin 2011-01-26 15:42 ` [PATCH 03/14] ARM: v6k: remove CPU_32v6K dependencies in asm/spinlock.h Nicolas Pitre 2011-01-26 15:42 ` Nicolas Pitre 2011-01-26 15:52 ` Russell King - ARM Linux 2011-01-26 15:52 ` Russell King - ARM Linux 2011-01-26 16:59 ` Dave Martin 2011-01-26 16:59 ` Dave Martin 2011-01-26 21:06 ` Nicolas Pitre 2011-01-26 21:06 ` Nicolas Pitre 2011-01-27 11:44 ` Dave P. Martin 2011-01-27 11:44 ` Dave P. Martin 2011-01-17 19:22 ` Russell King - ARM Linux [this message] 2011-01-17 19:22 ` [PATCH 04/14] ARM: v6k: introduce CPU_V6K option Russell King - ARM Linux 2011-01-17 23:14 ` Tony Lindgren 2011-01-17 23:14 ` Tony Lindgren 2011-01-18 10:36 ` Will Deacon 2011-01-18 10:36 ` Will Deacon 2011-01-18 11:09 ` Russell King - ARM Linux 2011-01-18 11:09 ` Russell King - ARM Linux 2011-01-18 13:35 ` Russell King - ARM Linux 2011-01-18 13:35 ` Russell King - ARM Linux 2011-01-18 15:22 ` Will Deacon 2011-01-18 15:22 ` Will Deacon 2011-01-17 19:22 ` [PATCH 05/14] ARM: v6k: Realview EB 11MPCore and PB11MPCore use V6K architecture CPUs Russell King - ARM Linux 2011-01-17 19:22 ` Russell King - ARM Linux 2011-01-17 19:23 ` [PATCH 06/14] ARM: v6k: Dove platforms " Russell King - ARM Linux 2011-01-17 19:23 ` Russell King - ARM Linux 2011-01-17 23:39 ` Nicolas Pitre 2011-01-17 23:39 ` Nicolas Pitre 2011-01-17 19:23 ` [PATCH 07/14] ARM: v6k: select clear exclusive code seqences according to V6 variants Russell King - ARM Linux 2011-01-17 19:23 ` Russell King - ARM Linux 2011-01-17 23:15 ` Tony Lindgren 2011-01-17 23:15 ` Tony Lindgren 2011-01-17 19:23 ` [PATCH 08/14] ARM: v6k: select cmpxchg code sequences " Russell King - ARM Linux 2011-01-17 19:23 ` Russell King - ARM Linux 2011-01-17 23:18 ` Tony Lindgren 2011-01-17 23:18 ` Tony Lindgren 2011-01-17 19:24 ` [PATCH 09/14] ARM: v6k: select generic atomic64 code " Russell King - ARM Linux 2011-01-17 19:24 ` Russell King - ARM Linux 2011-01-17 23:21 ` Tony Lindgren 2011-01-17 23:21 ` Tony Lindgren 2011-01-18 10:24 ` Will Deacon 2011-01-18 10:24 ` Will Deacon 2011-01-17 19:24 ` [PATCH 10/14] ARM: v6k: select TLS register " Russell King - ARM Linux 2011-01-17 19:24 ` Russell King - ARM Linux 2011-01-17 22:23 ` Nicolas Pitre 2011-01-17 22:23 ` Nicolas Pitre 2011-01-17 22:36 ` Russell King - ARM Linux 2011-01-17 22:36 ` Russell King - ARM Linux 2011-01-17 22:52 ` Russell King - ARM Linux 2011-01-17 22:52 ` Russell King - ARM Linux 2011-01-18 4:27 ` Nicolas Pitre 2011-01-18 4:27 ` Nicolas Pitre 2011-01-18 4:25 ` Nicolas Pitre 2011-01-18 4:25 ` Nicolas Pitre 2011-01-17 23:21 ` Tony Lindgren 2011-01-17 23:21 ` Tony Lindgren 2011-01-17 19:24 ` [PATCH 11/14] ARM: v6k: use CPU domain feature if we include support for arch < ARMv6K Russell King - ARM Linux 2011-01-17 19:24 ` Russell King - ARM Linux 2011-01-17 22:03 ` Nicolas Pitre 2011-01-17 22:03 ` Nicolas Pitre 2011-01-17 23:23 ` Tony Lindgren 2011-01-17 23:23 ` Tony Lindgren 2011-01-27 18:14 ` Catalin Marinas 2011-01-27 18:14 ` Catalin Marinas 2011-01-27 18:59 ` Russell King - ARM Linux 2011-01-27 18:59 ` Russell King - ARM Linux 2011-01-28 9:46 ` Catalin Marinas 2011-01-28 9:46 ` Catalin Marinas 2011-01-28 9:59 ` Russell King - ARM Linux 2011-01-28 9:59 ` Russell King - ARM Linux 2011-01-28 10:46 ` Catalin Marinas 2011-01-28 10:46 ` Catalin Marinas 2011-01-28 11:06 ` Russell King - ARM Linux 2011-01-28 11:06 ` Russell King - ARM Linux 2011-01-28 12:25 ` Catalin Marinas 2011-01-28 12:25 ` Catalin Marinas 2011-01-28 13:05 ` Russell King - ARM Linux 2011-01-28 13:05 ` Russell King - ARM Linux 2011-01-28 13:10 ` Catalin Marinas 2011-01-28 13:10 ` Catalin Marinas 2011-01-28 13:22 ` Russell King - ARM Linux 2011-01-28 13:22 ` Russell King - ARM Linux 2011-01-28 13:21 ` Russell King - ARM Linux 2011-01-28 13:21 ` Russell King - ARM Linux 2011-01-28 15:11 ` Catalin Marinas 2011-01-28 15:11 ` Catalin Marinas 2011-01-28 16:49 ` Tony Lindgren 2011-01-28 16:49 ` Tony Lindgren 2011-01-17 19:25 ` [PATCH 12/14] ARM: v6k: do not disable CPU_32v6K based on platform selection Russell King - ARM Linux 2011-01-17 19:25 ` Russell King - ARM Linux 2011-01-17 23:24 ` Tony Lindgren 2011-01-17 23:24 ` Tony Lindgren 2011-01-17 19:25 ` [PATCH 13/14] ARM: v6k: allow swp emulation again when ARMv7 is enabled Russell King - ARM Linux 2011-01-17 19:25 ` Russell King - ARM Linux 2011-01-17 23:24 ` Tony Lindgren 2011-01-17 23:24 ` Tony Lindgren 2011-01-17 19:25 ` [PATCH 14/14] ARM: v6k: only allow SMP if we have v6k or v7 CPU Russell King - ARM Linux 2011-01-17 19:25 ` Russell King - ARM Linux 2011-01-17 23:25 ` Tony Lindgren 2011-01-17 23:25 ` Tony Lindgren 2011-01-17 22:21 ` [PATCH 00/14] Fix issues with ARMv6+v6k+v7 kernels Tony Lindgren 2011-01-17 22:21 ` Tony Lindgren 2011-01-18 14:30 ` Kirill A. Shutemov 2011-01-18 14:30 ` Kirill A. Shutemov 2011-01-18 14:40 ` Russell King - ARM Linux 2011-01-18 14:40 ` Russell King - ARM Linux 2011-01-18 14:44 ` Kirill A. Shutemov 2011-01-18 14:44 ` Kirill A. Shutemov 2011-01-18 15:01 ` Russell King - ARM Linux 2011-01-18 15:01 ` Russell King - ARM Linux 2011-02-08 16:36 ` Santosh Shilimkar 2011-02-08 16:36 ` Santosh Shilimkar 2011-02-08 16:47 ` Russell King - ARM Linux 2011-02-08 16:47 ` Russell King - ARM Linux 2011-02-08 16:58 ` Santosh Shilimkar 2011-02-08 16:58 ` Santosh Shilimkar 2011-02-08 20:43 ` Nicolas Pitre 2011-02-08 20:43 ` Nicolas Pitre 2011-02-09 0:35 ` Tony Lindgren 2011-02-09 0:35 ` Tony Lindgren 2011-02-09 6:04 ` Santosh Shilimkar 2011-02-09 6:04 ` Santosh Shilimkar 2011-02-09 9:48 ` Dave Martin 2011-02-09 9:48 ` Dave Martin 2011-02-09 10:00 ` Santosh Shilimkar 2011-02-09 10:00 ` Santosh Shilimkar 2011-02-09 16:24 ` Tony Lindgren 2011-02-09 16:24 ` Tony Lindgren 2011-02-09 16:27 ` Santosh Shilimkar 2011-02-09 16:27 ` Santosh Shilimkar 2011-02-09 16:32 ` Russell King - ARM Linux 2011-02-09 16:32 ` Russell King - ARM Linux 2011-02-09 16:44 ` Russell King - ARM Linux 2011-02-09 16:44 ` Russell King - ARM Linux 2011-02-09 16:45 ` Nicolas Pitre 2011-02-09 16:45 ` Nicolas Pitre 2011-02-09 17:48 ` Tony Lindgren 2011-02-09 17:48 ` Tony Lindgren 2011-02-09 10:01 ` Catalin Marinas 2011-02-09 10:01 ` Catalin Marinas 2011-02-10 13:04 ` Russell King - ARM Linux 2011-02-10 13:04 ` Russell King - ARM Linux 2011-02-10 13:12 ` Catalin Marinas 2011-02-10 13:12 ` Catalin Marinas 2011-02-10 13:16 ` Russell King - ARM Linux 2011-02-10 13:16 ` Russell King - ARM Linux 2011-02-11 20:45 ` Nicolas Pitre 2011-02-11 20:45 ` Nicolas Pitre 2011-02-11 21:07 ` Russell King - ARM Linux 2011-02-11 21:07 ` Russell King - ARM Linux
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=E1Peuej-0003SV-Dn@rmk-PC.arm.linux.org.uk \ --to=linux@arm.linux.org.uk \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-omap@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.