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 |
