arm: v7R: Add initial support
authorMichal Simek <michal.simek@xilinx.com>
Thu, 26 Apr 2018 12:51:29 +0000 (18:21 +0530)
committerTom Rini <trini@konsulko.com>
Mon, 7 May 2018 19:53:28 +0000 (15:53 -0400)
The Cortex-R* processors are a mid-range CPUs for use in deeply-embedded,
real-time systems. It implements the ARMv7-R architecture, and includes
Thumb-2 technology for optimum code density and processing throughput.

Except for MPU(Memory Protection Unit) and few CP15 registers, most of the
features are compatible with v7 architecture. So,reuse the same armv7
folder and introduce a new config CPU_V7R in order to differentiate
from v7 based platforms.

Tested-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/cpu/armv7/start.S
cmd/Kconfig

index fd6d2011afaede6ffa20ac8a1599b246dbb2d603..f056e03c3f23f3bd7df62495930d126c0eb76b47 100644 (file)
@@ -212,6 +212,11 @@ config CPU_V7M
        select THUMB2_KERNEL
        select SYS_CACHE_SHIFT_5
 
+config CPU_V7R
+       bool
+       select HAS_THUMB2
+       select SYS_CACHE_SHIFT_6
+
 config CPU_PXA
        bool
        select SYS_CACHE_SHIFT_5
@@ -230,6 +235,7 @@ config SYS_CPU
        default "arm1136" if CPU_ARM1136
        default "arm1176" if CPU_ARM1176
        default "armv7" if CPU_V7A
+       default "armv7" if CPU_V7R
        default "armv7m" if CPU_V7M
        default "pxa" if CPU_PXA
        default "sa1100" if CPU_SA1100
@@ -245,6 +251,7 @@ config SYS_ARM_ARCH
        default 6 if CPU_ARM1176
        default 7 if CPU_V7A
        default 7 if CPU_V7M
+       default 7 if CPU_V7R
        default 5 if CPU_PXA
        default 4 if CPU_SA1100
        default 8 if ARM64
index b498f36b2acc457515fc2a7c61d8055829aa82c1..3b1dd85716dee13a985bc38ab59adcb6636b67ac 100644 (file)
@@ -16,6 +16,7 @@ arch-$(CONFIG_CPU_ARM1136)    =-march=armv5
 arch-$(CONFIG_CPU_ARM1176)     =-march=armv5t
 arch-$(CONFIG_CPU_V7A)         =$(call cc-option, -march=armv7-a, \
                                 $(call cc-option, -march=armv7, -march=armv5))
+arch-$(CONFIG_CPU_V7R)         =-march=armv7-r
 arch-$(CONFIG_ARM64)           =-march=armv8-a
 
 # On Tegra systems we must build SPL for the armv4 core on the device
@@ -39,6 +40,7 @@ tune-$(CONFIG_CPU_PXA)                =-mcpu=xscale
 tune-$(CONFIG_CPU_ARM1136)     =
 tune-$(CONFIG_CPU_ARM1176)     =
 tune-$(CONFIG_CPU_V7A)         =
+tune-$(CONFIG_CPU_V7R)         =
 tune-$(CONFIG_ARM64)           =
 
 # Evaluate tune cc-option calls now
index 8c19a83f8b5d0716eeeb1a6fdff35ac1a5bf9209..c996525f861e6c189075fe2fa85748363027baf5 100644 (file)
@@ -81,7 +81,9 @@ switch_to_hypervisor_ret:
 
        /* the mask ROM code should have PLL and others stable */
 #ifndef CONFIG_SKIP_LOWLEVEL_INIT
+#ifdef CONFIG_CPU_V7A
        bl      cpu_init_cp15
+#endif
 #ifndef CONFIG_SKIP_LOWLEVEL_INIT_ONLY
        bl      cpu_init_crit
 #endif
index 05b0d2f883d50a93cac101969ee6ee52a0d087d7..43240317caded2c537c27322370b6f4ec687d4e3 100644 (file)
@@ -1103,7 +1103,7 @@ config BOOTP_PXE_CLIENTARCH
 config BOOTP_VCI_STRING
        string
        depends on CMD_BOOTP
-       default "U-Boot.armv7" if CPU_V7A || CPU_V7M
+       default "U-Boot.armv7" if CPU_V7A || CPU_V7M || CPU_V7R
        default "U-Boot.armv8" if ARM64
        default "U-Boot.arm" if ARM
        default "U-Boot"