diff options
-rw-r--r-- | arch/arm/Kconfig | 4 | ||||
-rw-r--r-- | arch/arm/Kconfig-nommu | 2 | ||||
-rw-r--r-- | arch/arm/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/kernel/Makefile | 8 | ||||
-rw-r--r-- | arch/arm/mm/Kconfig | 21 | ||||
-rw-r--r-- | arch/arm/mm/Makefile | 2 |
6 files changed, 33 insertions, 5 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index dedf02b6f322..7c8c6079f948 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -9,7 +9,7 @@ config ARM | |||
9 | select BUILDTIME_EXTABLE_SORT if MMU | 9 | select BUILDTIME_EXTABLE_SORT if MMU |
10 | select CPU_PM if (SUSPEND || CPU_IDLE) | 10 | select CPU_PM if (SUSPEND || CPU_IDLE) |
11 | select DCACHE_WORD_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && !CPU_BIG_ENDIAN && MMU | 11 | select DCACHE_WORD_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && !CPU_BIG_ENDIAN && MMU |
12 | select GENERIC_ATOMIC64 if (CPU_V6 || !CPU_32v6K || !AEABI) | 12 | select GENERIC_ATOMIC64 if (CPU_V7M || CPU_V6 || !CPU_32v6K || !AEABI) |
13 | select GENERIC_CLOCKEVENTS_BROADCAST if SMP | 13 | select GENERIC_CLOCKEVENTS_BROADCAST if SMP |
14 | select GENERIC_IRQ_PROBE | 14 | select GENERIC_IRQ_PROBE |
15 | select GENERIC_IRQ_SHOW | 15 | select GENERIC_IRQ_SHOW |
@@ -1685,7 +1685,7 @@ config SCHED_HRTICK | |||
1685 | 1685 | ||
1686 | config THUMB2_KERNEL | 1686 | config THUMB2_KERNEL |
1687 | bool "Compile the kernel in Thumb-2 mode" if !CPU_THUMBONLY | 1687 | bool "Compile the kernel in Thumb-2 mode" if !CPU_THUMBONLY |
1688 | depends on CPU_V7 && !CPU_V6 && !CPU_V6K | 1688 | depends on (CPU_V7 || CPU_V7M) && !CPU_V6 && !CPU_V6K |
1689 | default y if CPU_THUMBONLY | 1689 | default y if CPU_THUMBONLY |
1690 | select AEABI | 1690 | select AEABI |
1691 | select ARM_ASM_UNIFIED | 1691 | select ARM_ASM_UNIFIED |
diff --git a/arch/arm/Kconfig-nommu b/arch/arm/Kconfig-nommu index 2cef8e13f9f8..c859495da480 100644 --- a/arch/arm/Kconfig-nommu +++ b/arch/arm/Kconfig-nommu | |||
@@ -28,7 +28,7 @@ config FLASH_SIZE | |||
28 | config PROCESSOR_ID | 28 | config PROCESSOR_ID |
29 | hex 'Hard wire the processor ID' | 29 | hex 'Hard wire the processor ID' |
30 | default 0x00007700 | 30 | default 0x00007700 |
31 | depends on !CPU_CP15 | 31 | depends on !(CPU_CP15 || CPU_V7M) |
32 | help | 32 | help |
33 | If processor has no CP15 register, this processor ID is | 33 | If processor has no CP15 register, this processor ID is |
34 | used instead of the auto-probing which utilizes the register. | 34 | used instead of the auto-probing which utilizes the register. |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index ee4605f400b0..f11b8da17672 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -59,6 +59,7 @@ comma = , | |||
59 | # Note that GCC does not numerically define an architecture version | 59 | # Note that GCC does not numerically define an architecture version |
60 | # macro, but instead defines a whole series of macros which makes | 60 | # macro, but instead defines a whole series of macros which makes |
61 | # testing for a specific architecture or later rather impossible. | 61 | # testing for a specific architecture or later rather impossible. |
62 | arch-$(CONFIG_CPU_32v7M) :=-D__LINUX_ARM_ARCH__=7 -march=armv7-m -Wa,-march=armv7-m | ||
62 | arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a) | 63 | arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a) |
63 | arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6) | 64 | arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6) |
64 | # Only override the compiler option if ARMv6. The ARMv6K extensions are | 65 | # Only override the compiler option if ARMv6. The ARMv6K extensions are |
diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile index 5f3338eacad2..00d703c49f82 100644 --- a/arch/arm/kernel/Makefile +++ b/arch/arm/kernel/Makefile | |||
@@ -15,7 +15,7 @@ CFLAGS_REMOVE_return_address.o = -pg | |||
15 | 15 | ||
16 | # Object file lists. | 16 | # Object file lists. |
17 | 17 | ||
18 | obj-y := elf.o entry-armv.o entry-common.o irq.o opcodes.o \ | 18 | obj-y := elf.o entry-common.o irq.o opcodes.o \ |
19 | process.o ptrace.o return_address.o sched_clock.o \ | 19 | process.o ptrace.o return_address.o sched_clock.o \ |
20 | setup.o signal.o stacktrace.o sys_arm.o time.o traps.o | 20 | setup.o signal.o stacktrace.o sys_arm.o time.o traps.o |
21 | 21 | ||
@@ -23,6 +23,12 @@ obj-$(CONFIG_ATAGS) += atags_parse.o | |||
23 | obj-$(CONFIG_ATAGS_PROC) += atags_proc.o | 23 | obj-$(CONFIG_ATAGS_PROC) += atags_proc.o |
24 | obj-$(CONFIG_DEPRECATED_PARAM_STRUCT) += atags_compat.o | 24 | obj-$(CONFIG_DEPRECATED_PARAM_STRUCT) += atags_compat.o |
25 | 25 | ||
26 | ifeq ($(CONFIG_CPU_V7M),y) | ||
27 | obj-y += entry-v7m.o | ||
28 | else | ||
29 | obj-y += entry-armv.o | ||
30 | endif | ||
31 | |||
26 | obj-$(CONFIG_OC_ETM) += etm.o | 32 | obj-$(CONFIG_OC_ETM) += etm.o |
27 | obj-$(CONFIG_CPU_IDLE) += cpuidle.o | 33 | obj-$(CONFIG_CPU_IDLE) += cpuidle.o |
28 | obj-$(CONFIG_ISA_DMA_API) += dma.o | 34 | obj-$(CONFIG_ISA_DMA_API) += dma.o |
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index cb812a13e299..cce78b070825 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -397,6 +397,15 @@ config CPU_V7 | |||
397 | select CPU_PABRT_V7 | 397 | select CPU_PABRT_V7 |
398 | select CPU_TLB_V7 if MMU | 398 | select CPU_TLB_V7 if MMU |
399 | 399 | ||
400 | # ARMv7M | ||
401 | config CPU_V7M | ||
402 | bool | ||
403 | select CPU_32v7M | ||
404 | select CPU_ABRT_NOMMU | ||
405 | select CPU_CACHE_NOP | ||
406 | select CPU_PABRT_LEGACY | ||
407 | select CPU_THUMBONLY | ||
408 | |||
400 | config CPU_THUMBONLY | 409 | config CPU_THUMBONLY |
401 | bool | 410 | bool |
402 | # There are no CPUs available with MMU that don't implement an ARM ISA: | 411 | # There are no CPUs available with MMU that don't implement an ARM ISA: |
@@ -441,6 +450,9 @@ config CPU_32v6K | |||
441 | config CPU_32v7 | 450 | config CPU_32v7 |
442 | bool | 451 | bool |
443 | 452 | ||
453 | config CPU_32v7M | ||
454 | bool | ||
455 | |||
444 | # The abort model | 456 | # The abort model |
445 | config CPU_ABRT_NOMMU | 457 | config CPU_ABRT_NOMMU |
446 | bool | 458 | bool |
@@ -494,6 +506,9 @@ config CPU_CACHE_V6 | |||
494 | config CPU_CACHE_V7 | 506 | config CPU_CACHE_V7 |
495 | bool | 507 | bool |
496 | 508 | ||
509 | config CPU_CACHE_NOP | ||
510 | bool | ||
511 | |||
497 | config CPU_CACHE_VIVT | 512 | config CPU_CACHE_VIVT |
498 | bool | 513 | bool |
499 | 514 | ||
@@ -616,7 +631,11 @@ config ARCH_DMA_ADDR_T_64BIT | |||
616 | 631 | ||
617 | config ARM_THUMB | 632 | config ARM_THUMB |
618 | bool "Support Thumb user binaries" if !CPU_THUMBONLY | 633 | bool "Support Thumb user binaries" if !CPU_THUMBONLY |
619 | 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 | 634 | depends on CPU_ARM720T || CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || \ |
635 | CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || \ | ||
636 | CPU_ARM1020 || CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || \ | ||
637 | CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_V6 || CPU_V6K || \ | ||
638 | CPU_V7 || CPU_FEROCEON || CPU_V7M | ||
620 | default y | 639 | default y |
621 | help | 640 | help |
622 | Say Y if you want to include kernel support for running user space | 641 | Say Y if you want to include kernel support for running user space |
diff --git a/arch/arm/mm/Makefile b/arch/arm/mm/Makefile index 4e333fa2756f..317b57559340 100644 --- a/arch/arm/mm/Makefile +++ b/arch/arm/mm/Makefile | |||
@@ -40,6 +40,7 @@ obj-$(CONFIG_CPU_CACHE_V4WB) += cache-v4wb.o | |||
40 | obj-$(CONFIG_CPU_CACHE_V6) += cache-v6.o | 40 | obj-$(CONFIG_CPU_CACHE_V6) += cache-v6.o |
41 | obj-$(CONFIG_CPU_CACHE_V7) += cache-v7.o | 41 | obj-$(CONFIG_CPU_CACHE_V7) += cache-v7.o |
42 | obj-$(CONFIG_CPU_CACHE_FA) += cache-fa.o | 42 | obj-$(CONFIG_CPU_CACHE_FA) += cache-fa.o |
43 | obj-$(CONFIG_CPU_CACHE_NOP) += cache-nop.o | ||
43 | 44 | ||
44 | AFLAGS_cache-v6.o :=-Wa,-march=armv6 | 45 | AFLAGS_cache-v6.o :=-Wa,-march=armv6 |
45 | AFLAGS_cache-v7.o :=-Wa,-march=armv7-a | 46 | AFLAGS_cache-v7.o :=-Wa,-march=armv7-a |
@@ -88,6 +89,7 @@ obj-$(CONFIG_CPU_FEROCEON) += proc-feroceon.o | |||
88 | obj-$(CONFIG_CPU_V6) += proc-v6.o | 89 | obj-$(CONFIG_CPU_V6) += proc-v6.o |
89 | obj-$(CONFIG_CPU_V6K) += proc-v6.o | 90 | obj-$(CONFIG_CPU_V6K) += proc-v6.o |
90 | obj-$(CONFIG_CPU_V7) += proc-v7.o | 91 | obj-$(CONFIG_CPU_V7) += proc-v7.o |
92 | obj-$(CONFIG_CPU_V7M) += proc-v7m.o | ||
91 | 93 | ||
92 | AFLAGS_proc-v6.o :=-Wa,-march=armv6 | 94 | AFLAGS_proc-v6.o :=-Wa,-march=armv6 |
93 | AFLAGS_proc-v7.o :=-Wa,-march=armv7-a | 95 | AFLAGS_proc-v7.o :=-Wa,-march=armv7-a |