* [U-Boot] [PATCH v2 0/7] arm: Introduce v7R support
@ 2018-04-26 12:51 Lokesh Vutla
2018-04-26 12:51 ` [U-Boot] [PATCH v2 1/7] arm: v7: Update VBAR only if available Lokesh Vutla
` (7 more replies)
0 siblings, 8 replies; 18+ messages in thread
From: Lokesh Vutla @ 2018-04-26 12:51 UTC (permalink / raw)
To: u-boot
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. This series adds minimal
support for v7-R architecture by reusing the v7 support. Also adding
support for MPU.
Travis-ci build report: https://travis-ci.org/lokeshvutla/u-boot/builds/371442638
Changes since v1:
- Renamed file armv7m_mpu.h to armv7_mpu.h
- Removed an unnecessary guard for an include
Changes since RFC:
- Renamed CPUV7 as CPU_V7A
- Renamed MMU as SYS_ARM_MMU
- Added SYS_ARM_CACHE_CP15
Lokesh Vutla (6):
arm: v7: Update VBAR only if available
arm: v7: Kconfig: Rename CPU_V7 as CPU_V7A
arm: v7: Kconfig: Add entry for MMU
arm: v7: Kconfig: Introduce SYS_ARM_CACHE_CP15
arm: v7R: Add support for MPU
arm: v7R: Add support for enabling caches
Michal Simek (1):
arm: v7R: Add initial support
arch/arm/Kconfig | 95 ++++++++++++++++------
arch/arm/Makefile | 8 +-
arch/arm/cpu/armv7/Kconfig | 4 +-
arch/arm/cpu/armv7/Makefile | 2 +
arch/arm/cpu/armv7/mpu_v7r.c | 120 +++++++++++++++++++++++++++
arch/arm/cpu/armv7/start.S | 4 +
arch/arm/cpu/armv7m/Makefile | 3 +-
arch/arm/cpu/armv7m/mpu.c | 43 +---------
arch/arm/include/asm/armv7_mpu.h | 131 ++++++++++++++++++++++++++++++
arch/arm/include/asm/armv7m_mpu.h | 67 ---------------
arch/arm/include/asm/system.h | 4 +-
arch/arm/lib/Makefile | 6 +-
arch/arm/lib/cache-cp15.c | 14 +++-
arch/arm/mach-at91/Kconfig | 12 +--
arch/arm/mach-at91/Makefile | 2 +-
arch/arm/mach-at91/config.mk | 2 +-
arch/arm/mach-bcm283x/Kconfig | 4 +-
arch/arm/mach-exynos/Kconfig | 4 +-
arch/arm/mach-exynos/Makefile | 2 +-
arch/arm/mach-exynos/soc.c | 2 +-
arch/arm/mach-mvebu/Kconfig | 2 +-
arch/arm/mach-qemu/Kconfig | 2 +-
arch/arm/mach-rmobile/Kconfig | 2 +-
arch/arm/mach-rockchip/Kconfig | 12 +--
arch/arm/mach-stm32/soc.c | 2 +-
arch/arm/mach-stm32mp/Kconfig | 2 +-
arch/arm/mach-sunxi/Kconfig | 22 ++---
arch/arm/mach-tegra/Kconfig | 2 +-
arch/arm/mach-uniphier/Kconfig | 2 +-
arch/arm/mach-uniphier/Makefile | 2 +-
cmd/Kconfig | 2 +-
drivers/serial/arm_dcc.c | 2 +-
32 files changed, 392 insertions(+), 191 deletions(-)
create mode 100644 arch/arm/cpu/armv7/mpu_v7r.c
create mode 100644 arch/arm/include/asm/armv7_mpu.h
delete mode 100644 arch/arm/include/asm/armv7m_mpu.h
--
2.17.0
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH v2 1/7] arm: v7: Update VBAR only if available
2018-04-26 12:51 [U-Boot] [PATCH v2 0/7] arm: Introduce v7R support Lokesh Vutla
@ 2018-04-26 12:51 ` Lokesh Vutla
2018-05-08 0:45 ` [U-Boot] [U-Boot, v2, " Tom Rini
2018-04-26 12:51 ` [U-Boot] [PATCH v2 2/7] arm: v7: Kconfig: Rename CPU_V7 as CPU_V7A Lokesh Vutla
` (6 subsequent siblings)
7 siblings, 1 reply; 18+ messages in thread
From: Lokesh Vutla @ 2018-04-26 12:51 UTC (permalink / raw)
To: u-boot
Not all ARM V7 based cpus has VBAR for remapping
vector base address. So, update VBAR only if it available.
Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
---
arch/arm/cpu/armv7/start.S | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
index 7e2695761e..937f7051fe 100644
--- a/arch/arm/cpu/armv7/start.S
+++ b/arch/arm/cpu/armv7/start.S
@@ -73,9 +73,11 @@ switch_to_hypervisor_ret:
bic r0, #CR_V @ V = 0
mcr p15, 0, r0, c1, c0, 0 @ Write CP15 SCTLR Register
+#ifdef CONFIG_HAS_VBAR
/* Set vector address in CP15 VBAR register */
ldr r0, =_start
mcr p15, 0, r0, c12, c0, 0 @Set VBAR
+#endif
#endif
/* the mask ROM code should have PLL and others stable */
--
2.17.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH v2 2/7] arm: v7: Kconfig: Rename CPU_V7 as CPU_V7A
2018-04-26 12:51 [U-Boot] [PATCH v2 0/7] arm: Introduce v7R support Lokesh Vutla
2018-04-26 12:51 ` [U-Boot] [PATCH v2 1/7] arm: v7: Update VBAR only if available Lokesh Vutla
@ 2018-04-26 12:51 ` Lokesh Vutla
2018-05-08 0:45 ` [U-Boot] [U-Boot, v2, " Tom Rini
2018-04-26 12:51 ` [U-Boot] [PATCH v2 3/7] arm: v7: Kconfig: Add entry for MMU Lokesh Vutla
` (5 subsequent siblings)
7 siblings, 1 reply; 18+ messages in thread
From: Lokesh Vutla @ 2018-04-26 12:51 UTC (permalink / raw)
To: u-boot
Currently CPU_V7 kconfig symbol supports only ARMv7A architectures under
armv7 folder. This led to a misconception of creating separate folders
for armv7m and armv7r. There is no reason to create separate folder for
other armv7 based architectures when it can co-exist with few Kconfig
symbols.
As a first step towards a common folder, rename CPU_V7 as CPUV7A. Later
separate Kconfig symbols can be added for CPU_V7R and CPU_V7M and
can co exist in the same folder.
Reviewed-by: Tom Rini <trini@konsulko.com>
Tested-by: Michal Simek <michal.simek@xilinx.com>
Suggested-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
---
arch/arm/Kconfig | 54 ++++++++++++++++-----------------
arch/arm/Makefile | 6 ++--
arch/arm/cpu/armv7/Kconfig | 4 +--
arch/arm/include/asm/system.h | 4 +--
arch/arm/lib/cache-cp15.c | 2 +-
arch/arm/mach-at91/Kconfig | 12 ++++----
arch/arm/mach-at91/Makefile | 2 +-
arch/arm/mach-at91/config.mk | 2 +-
arch/arm/mach-bcm283x/Kconfig | 4 +--
arch/arm/mach-exynos/Kconfig | 4 +--
arch/arm/mach-exynos/Makefile | 2 +-
arch/arm/mach-exynos/soc.c | 2 +-
arch/arm/mach-mvebu/Kconfig | 2 +-
arch/arm/mach-qemu/Kconfig | 2 +-
arch/arm/mach-rmobile/Kconfig | 2 +-
arch/arm/mach-rockchip/Kconfig | 12 ++++----
arch/arm/mach-stm32mp/Kconfig | 2 +-
arch/arm/mach-sunxi/Kconfig | 22 +++++++-------
arch/arm/mach-tegra/Kconfig | 2 +-
arch/arm/mach-uniphier/Kconfig | 2 +-
arch/arm/mach-uniphier/Makefile | 2 +-
cmd/Kconfig | 2 +-
drivers/serial/arm_dcc.c | 2 +-
23 files changed, 75 insertions(+), 75 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 7212fc5afa..df475626e7 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -180,7 +180,7 @@ config CPU_ARM1176
select HAS_VBAR
select SYS_CACHE_SHIFT_5
-config CPU_V7
+config CPU_V7A
bool
select HAS_VBAR
select HAS_THUMB2
@@ -207,7 +207,7 @@ config SYS_CPU
default "arm946es" if CPU_ARM946ES
default "arm1136" if CPU_ARM1136
default "arm1176" if CPU_ARM1176
- default "armv7" if CPU_V7
+ default "armv7" if CPU_V7A
default "armv7m" if CPU_V7M
default "pxa" if CPU_PXA
default "sa1100" if CPU_SA1100
@@ -221,7 +221,7 @@ config SYS_ARM_ARCH
default 5 if CPU_ARM946ES
default 6 if CPU_ARM1136
default 6 if CPU_ARM1176
- default 7 if CPU_V7
+ default 7 if CPU_V7A
default 7 if CPU_V7M
default 5 if CPU_PXA
default 4 if CPU_SA1100
@@ -244,7 +244,7 @@ config SYS_CACHELINE_SIZE
config ARM_SMCCC
bool "Support for ARM SMC Calling Convention (SMCCC)"
- depends on CPU_V7 || ARM64
+ depends on CPU_V7A || ARM64
select ARM_PSCI_FW
help
Say Y here if you want to enable ARM SMC Calling Convention.
@@ -429,7 +429,7 @@ config TARGET_SPEAR600
config TARGET_STV0991
bool "Support stv0991"
- select CPU_V7
+ select CPU_V7A
select DM
select DM_SERIAL
select DM_SPI
@@ -481,36 +481,36 @@ config ARCH_BCM283X
config TARGET_VEXPRESS_CA15_TC2
bool "Support vexpress_ca15_tc2"
- select CPU_V7
+ select CPU_V7A
select CPU_V7_HAS_NONSEC
select CPU_V7_HAS_VIRT
select PL011_SERIAL
config TARGET_VEXPRESS_CA5X2
bool "Support vexpress_ca5x2"
- select CPU_V7
+ select CPU_V7A
select PL011_SERIAL
config TARGET_VEXPRESS_CA9X4
bool "Support vexpress_ca9x4"
- select CPU_V7
+ select CPU_V7A
select PL011_SERIAL
config TARGET_BCM23550_W1D
bool "Support bcm23550_w1d"
- select CPU_V7
+ select CPU_V7A
imply CRC32_VERIFY
imply FAT_WRITE
config TARGET_BCM28155_AP
bool "Support bcm28155_ap"
- select CPU_V7
+ select CPU_V7A
imply CRC32_VERIFY
imply FAT_WRITE
config TARGET_BCMCYGNUS
bool "Support bcmcygnus"
- select CPU_V7
+ select CPU_V7A
imply CRC32_VERIFY
imply CMD_HASH
imply FAT_WRITE
@@ -521,7 +521,7 @@ config TARGET_BCMCYGNUS
config TARGET_BCMNSP
bool "Support bcmnsp"
- select CPU_V7
+ select CPU_V7A
config TARGET_BCMNS2
bool "Support Broadcom Northstar2"
@@ -544,7 +544,7 @@ config ARCH_EXYNOS
config ARCH_S5PC1XX
bool "Samsung S5PC1XX"
- select CPU_V7
+ select CPU_V7A
select DM
select DM_SERIAL
select DM_GPIO
@@ -552,7 +552,7 @@ config ARCH_S5PC1XX
config ARCH_HIGHBANK
bool "Calxeda Highbank"
- select CPU_V7
+ select CPU_V7A
select PL011_SERIAL
config ARCH_INTEGRATOR
@@ -563,7 +563,7 @@ config ARCH_INTEGRATOR
config ARCH_KEYSTONE
bool "TI Keystone"
- select CPU_V7
+ select CPU_V7A
select SUPPORT_SPL
select SYS_THUMB_BUILD
select CMD_POWEROFF
@@ -573,7 +573,7 @@ config ARCH_KEYSTONE
config ARCH_OMAP2PLUS
bool "TI OMAP2+"
- select CPU_V7
+ select CPU_V7A
select SPL_BOARD_INIT if SPL
select SPL_STACK_R if SPL
select SUPPORT_SPL
@@ -611,13 +611,13 @@ config ARCH_MX28
config ARCH_MX7ULP
bool "NXP MX7ULP"
- select CPU_V7
+ select CPU_V7A
select ROM_UNIFIED_SECTIONS
imply MXC_GPIO
config ARCH_MX7
bool "Freescale MX7"
- select CPU_V7
+ select CPU_V7A
select SYS_FSL_HAS_SEC if SECURE_BOOT
select SYS_FSL_SEC_COMPAT_4
select SYS_FSL_SEC_LE
@@ -627,7 +627,7 @@ config ARCH_MX7
config ARCH_MX6
bool "Freescale MX6"
- select CPU_V7
+ select CPU_V7A
select SYS_FSL_HAS_SEC if SECURE_BOOT
select SYS_FSL_SEC_COMPAT_4
select SYS_FSL_SEC_LE
@@ -641,7 +641,7 @@ endif
config ARCH_MX5
bool "Freescale MX5"
- select CPU_V7
+ select CPU_V7A
select BOARD_EARLY_INIT_F
imply MXC_GPIO
@@ -677,7 +677,7 @@ config ARCH_SNAPDRAGON
config ARCH_SOCFPGA
bool "Altera SOCFPGA family"
- select CPU_V7
+ select CPU_V7A
select SUPPORT_SPL
select OF_CONTROL
select SPL_OF_CONTROL
@@ -734,7 +734,7 @@ config ARCH_SUNXI
config ARCH_VF610
bool "Freescale Vybrid"
- select CPU_V7
+ select CPU_V7A
select SYS_FSL_ERRATUM_ESDHC111
imply CMD_MTDPARTS
imply NAND
@@ -742,7 +742,7 @@ config ARCH_VF610
config ARCH_ZYNQ
bool "Xilinx Zynq based platform"
select BOARD_LATE_INIT
- select CPU_V7
+ select CPU_V7A
select SUPPORT_SPL
select OF_CONTROL
select SPL_BOARD_INIT if SPL
@@ -982,7 +982,7 @@ config TARGET_LS1088ARDB
config TARGET_LS1021AQDS
bool "Support ls1021aqds"
select BOARD_LATE_INIT
- select CPU_V7
+ select CPU_V7A
select CPU_V7_HAS_NONSEC
select CPU_V7_HAS_VIRT
select SUPPORT_SPL
@@ -996,7 +996,7 @@ config TARGET_LS1021AQDS
config TARGET_LS1021ATWR
bool "Support ls1021atwr"
select BOARD_LATE_INIT
- select CPU_V7
+ select CPU_V7A
select CPU_V7_HAS_NONSEC
select CPU_V7_HAS_VIRT
select SUPPORT_SPL
@@ -1009,7 +1009,7 @@ config TARGET_LS1021ATWR
config TARGET_LS1021AIOT
bool "Support ls1021aiot"
select BOARD_LATE_INIT
- select CPU_V7
+ select CPU_V7A
select CPU_V7_HAS_NONSEC
select CPU_V7_HAS_VIRT
select SUPPORT_SPL
@@ -1125,7 +1125,7 @@ config STM32
config ARCH_STI
bool "Support STMicrolectronics SoCs"
- select CPU_V7
+ select CPU_V7A
select DM
select DM_SERIAL
select BLK
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 4fa8b38397..2979ad86fd 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -3,7 +3,7 @@
#
ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TEGRA),yy)
-CONFIG_CPU_V7=
+CONFIG_CPU_V7A=
CONFIG_CPU_ARM720T=y
endif
@@ -16,7 +16,7 @@ arch-$(CONFIG_CPU_SA1100) =-march=armv4
arch-$(CONFIG_CPU_PXA) =
arch-$(CONFIG_CPU_ARM1136) =-march=armv5
arch-$(CONFIG_CPU_ARM1176) =-march=armv5t
-arch-$(CONFIG_CPU_V7) =$(call cc-option, -march=armv7-a, \
+arch-$(CONFIG_CPU_V7A) =$(call cc-option, -march=armv7-a, \
$(call cc-option, -march=armv7, -march=armv5))
arch-$(CONFIG_ARM64) =-march=armv8-a
@@ -40,7 +40,7 @@ tune-$(CONFIG_CPU_SA1100) =-mtune=strongarm1100
tune-$(CONFIG_CPU_PXA) =-mcpu=xscale
tune-$(CONFIG_CPU_ARM1136) =
tune-$(CONFIG_CPU_ARM1176) =
-tune-$(CONFIG_CPU_V7) =
+tune-$(CONFIG_CPU_V7A) =
tune-$(CONFIG_ARM64) =
# Evaluate tune cc-option calls now
diff --git a/arch/arm/cpu/armv7/Kconfig b/arch/arm/cpu/armv7/Kconfig
index b9c4f4e79b..37a0be932e 100644
--- a/arch/arm/cpu/armv7/Kconfig
+++ b/arch/arm/cpu/armv7/Kconfig
@@ -1,4 +1,4 @@
-if CPU_V7
+if CPU_V7A
config CPU_V7_HAS_NONSEC
bool
@@ -52,7 +52,7 @@ config ARMV7_PSCI_NR_CPUS
config ARMV7_LPAE
bool "Use LPAE page table format" if EXPERT
- depends on CPU_V7
+ depends on CPU_V7A
default n
---help---
Say Y here to use the long descriptor page table format. This is
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h
index 4f043cad0b..c1f87f9caf 100644
--- a/arch/arm/include/asm/system.h
+++ b/arch/arm/include/asm/system.h
@@ -451,7 +451,7 @@ enum dcache_option {
DCACHE_WRITEBACK = TTB_SECT | TTB_SECT_MAIR(2),
DCACHE_WRITEALLOC = TTB_SECT | TTB_SECT_MAIR(3),
};
-#elif defined(CONFIG_CPU_V7)
+#elif defined(CONFIG_CPU_V7A)
/* Short-Descriptor Translation Table Level 1 Bits */
#define TTB_SECT_NS_MASK (1 << 19)
#define TTB_SECT_NG_MASK (1 << 17)
@@ -493,7 +493,7 @@ enum {
MMU_SECTION_SIZE = 1 << MMU_SECTION_SHIFT,
};
-#ifdef CONFIG_CPU_V7
+#ifdef CONFIG_CPU_V7A
/* TTBR0 bits */
#define TTBR0_BASE_ADDR_MASK 0xFFFFC000
#define TTBR0_RGN_NC (0 << 3)
diff --git a/arch/arm/lib/cache-cp15.c b/arch/arm/lib/cache-cp15.c
index f0c1b03728..b09c631636 100644
--- a/arch/arm/lib/cache-cp15.c
+++ b/arch/arm/lib/cache-cp15.c
@@ -161,7 +161,7 @@ static inline void mmu_setup(void)
asm volatile("mcr p15, 0, %0, c10, c2, 0"
: : "r" (MEMORY_ATTRIBUTES) : "memory");
}
-#elif defined(CONFIG_CPU_V7)
+#elif defined(CONFIG_CPU_V7A)
if (is_hyp()) {
/* Set HTCR to disable LPAE */
asm volatile("mcr p15, 4, %0, c2, c0, 2"
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 3621dfa760..6f046875ab 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -45,15 +45,15 @@ config AT91SAM9X5
config SAMA5D2
bool
- select CPU_V7
+ select CPU_V7A
config SAMA5D3
bool
- select CPU_V7
+ select CPU_V7A
config SAMA5D4
bool
- select CPU_V7
+ select CPU_V7A
choice
prompt "Atmel AT91 board select"
@@ -158,7 +158,7 @@ config TARGET_SAMA5D2_XPLAINED
config TARGET_SAMA5D27_SOM1_EK
bool "SAMA5D27 SOM1 EK board"
- select CPU_V7
+ select CPU_V7A
select SUPPORT_SPL
select BOARD_EARLY_INIT_F
select BOARD_LATE_INIT
@@ -250,7 +250,7 @@ config TARGET_WB45N
config TARGET_WB50N
bool "Support Laird WB50N"
select BOARD_LATE_INIT
- select CPU_V7
+ select CPU_V7A
select SUPPORT_SPL
select BOARD_EARLY_INIT_F
@@ -293,6 +293,6 @@ source "board/laird/wb50n/Kconfig"
config SPL_LDSCRIPT
default "arch/arm/mach-at91/arm926ejs/u-boot-spl.lds" if CPU_ARM926EJS
- default "arch/arm/mach-at91/armv7/u-boot-spl.lds" if CPU_V7
+ default "arch/arm/mach-at91/armv7/u-boot-spl.lds" if CPU_V7A
endif
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index a908004b0a..2733a0bc7f 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -18,4 +18,4 @@ endif
obj-y += clock.o
obj-$(CONFIG_CPU_ARM920T) += arm920t/
obj-$(CONFIG_CPU_ARM926EJS) += arm926ejs/
-obj-$(CONFIG_CPU_V7) += armv7/
+obj-$(CONFIG_CPU_V7A) += armv7/
diff --git a/arch/arm/mach-at91/config.mk b/arch/arm/mach-at91/config.mk
index 7168abbd58..9a023efb19 100644
--- a/arch/arm/mach-at91/config.mk
+++ b/arch/arm/mach-at91/config.mk
@@ -2,7 +2,7 @@ ifeq ($(CONFIG_CPU_ARM926EJS),y)
PLATFORM_CPPFLAGS += $(call cc-option,-mtune=arm926ejs,)
endif
-ifeq ($(CONFIG_CPU_V7),y)
+ifeq ($(CONFIG_CPU_V7A),y)
ifndef CONFIG_SPL_BUILD
ALL-y += u-boot.img
endif
diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig
index a78239d63e..821caedbf7 100644
--- a/arch/arm/mach-bcm283x/Kconfig
+++ b/arch/arm/mach-bcm283x/Kconfig
@@ -7,7 +7,7 @@ config BCM2836
bool "Broadcom BCM2836 SoC support"
depends on ARCH_BCM283X
select ARMV7_LPAE
- select CPU_V7
+ select CPU_V7A
config BCM2837
bool "Broadcom BCM2837 SoC support"
@@ -18,7 +18,7 @@ config BCM2837_32B
depends on ARCH_BCM283X
select BCM2837
select ARMV7_LPAE
- select CPU_V7
+ select CPU_V7A
config BCM2837_64B
bool "Broadcom BCM2837 SoC 64-bit support"
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index 5ac047d892..65d9168ae2 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -6,7 +6,7 @@ choice
config ARCH_EXYNOS4
bool "Exynos4 SoC family"
- select CPU_V7
+ select CPU_V7A
select BOARD_EARLY_INIT_F
help
Samsung Exynos4 SoC family are based on ARM Cortex-A9 CPU. There
@@ -15,7 +15,7 @@ config ARCH_EXYNOS4
config ARCH_EXYNOS5
bool "Exynos5 SoC family"
- select CPU_V7
+ select CPU_V7A
select BOARD_EARLY_INIT_F
select SHA_HW_ACCEL
imply CRC32_VERIFY
diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile
index 0cc6c3253a..49a3e22927 100644
--- a/arch/arm/mach-exynos/Makefile
+++ b/arch/arm/mach-exynos/Makefile
@@ -6,7 +6,7 @@
#
obj-y += soc.o
-obj-$(CONFIG_CPU_V7) += clock.o pinmux.o power.o system.o
+obj-$(CONFIG_CPU_V7A) += clock.o pinmux.o power.o system.o
obj-$(CONFIG_ARM64) += mmu-arm64.o
obj-$(CONFIG_EXYNOS5420) += sec_boot.o
diff --git a/arch/arm/mach-exynos/soc.c b/arch/arm/mach-exynos/soc.c
index cf149ad1a8..181656e7b0 100644
--- a/arch/arm/mach-exynos/soc.c
+++ b/arch/arm/mach-exynos/soc.c
@@ -21,7 +21,7 @@ void *secondary_boot_addr = (void *)_main;
void reset_cpu(ulong addr)
{
-#ifdef CONFIG_CPU_V7
+#ifdef CONFIG_CPU_V7A
writel(0x1, samsung_get_base_swreset());
#endif
}
diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
index 01d700bf2e..ec42cf9044 100644
--- a/arch/arm/mach-mvebu/Kconfig
+++ b/arch/arm/mach-mvebu/Kconfig
@@ -6,7 +6,7 @@ config HAVE_MVEBU_EFUSE
config ARMADA_32BIT
bool
- select CPU_V7
+ select CPU_V7A
select SUPPORT_SPL
select SPL_DM
select SPL_DM_SEQ_ALIAS
diff --git a/arch/arm/mach-qemu/Kconfig b/arch/arm/mach-qemu/Kconfig
index 133163aecf..dfc43999a2 100644
--- a/arch/arm/mach-qemu/Kconfig
+++ b/arch/arm/mach-qemu/Kconfig
@@ -14,7 +14,7 @@ endif
config TARGET_QEMU_ARM_32BIT
bool "Support qemu_arm"
depends on ARCH_QEMU
- select CPU_V7
+ select CPU_V7A
select ARCH_SUPPORT_PSCI
config TARGET_QEMU_ARM_64BIT
diff --git a/arch/arm/mach-rmobile/Kconfig b/arch/arm/mach-rmobile/Kconfig
index 4b05d78839..fc4b3c3219 100644
--- a/arch/arm/mach-rmobile/Kconfig
+++ b/arch/arm/mach-rmobile/Kconfig
@@ -6,7 +6,7 @@ choice
config RCAR_32
bool "Renesas ARM SoCs R-Car Gen1/Gen2 (32bit)"
- select CPU_V7
+ select CPU_V7A
config RCAR_GEN3
bool "Renesas ARM SoCs R-Car Gen3 (64bit)"
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
index 0adaed4367..34bc895967 100644
--- a/arch/arm/mach-rockchip/Kconfig
+++ b/arch/arm/mach-rockchip/Kconfig
@@ -2,7 +2,7 @@ if ARCH_ROCKCHIP
config ROCKCHIP_RK3036
bool "Support Rockchip RK3036"
- select CPU_V7
+ select CPU_V7A
select SUPPORT_SPL
select SPL
imply USB_FUNCTION_ROCKUSB
@@ -15,7 +15,7 @@ config ROCKCHIP_RK3036
config ROCKCHIP_RK3128
bool "Support Rockchip RK3128"
- select CPU_V7
+ select CPU_V7A
help
The Rockchip RK3128 is a ARM-based SoC with a quad-core Cortex-A7
including NEON and GPU, Mali-400 graphics, several DDR3 options
@@ -24,7 +24,7 @@ config ROCKCHIP_RK3128
config ROCKCHIP_RK3188
bool "Support Rockchip RK3188"
- select CPU_V7
+ select CPU_V7A
select SPL_BOARD_INIT if SPL
select SUPPORT_SPL
select SPL
@@ -46,7 +46,7 @@ config ROCKCHIP_RK3188
config ROCKCHIP_RK322X
bool "Support Rockchip RK3228/RK3229"
- select CPU_V7
+ select CPU_V7A
select SUPPORT_SPL
select SPL
select ROCKCHIP_BROM_HELPER
@@ -59,7 +59,7 @@ config ROCKCHIP_RK322X
config ROCKCHIP_RK3288
bool "Support Rockchip RK3288"
- select CPU_V7
+ select CPU_V7A
select SPL_BOARD_INIT if SPL
select SUPPORT_SPL
select SPL
@@ -152,7 +152,7 @@ config ROCKCHIP_RK3399
config ROCKCHIP_RV1108
bool "Support Rockchip RV1108"
- select CPU_V7
+ select CPU_V7A
help
The Rockchip RV1108 is a ARM-based SoC with a single-core Cortex-A7
and a DSP.
diff --git a/arch/arm/mach-stm32mp/Kconfig b/arch/arm/mach-stm32mp/Kconfig
index 8ca97bf0c9..bb3e287a55 100644
--- a/arch/arm/mach-stm32mp/Kconfig
+++ b/arch/arm/mach-stm32mp/Kconfig
@@ -24,7 +24,7 @@ config SYS_SOC
config TARGET_STM32MP1
bool "Support stm32mp1xx"
- select CPU_V7
+ select CPU_V7A
select PINCTRL_STM32
select STM32_RESET
select SYSRESET_SYSCON
diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
index b868f0e350..f0c9d1b058 100644
--- a/arch/arm/mach-sunxi/Kconfig
+++ b/arch/arm/mach-sunxi/Kconfig
@@ -136,7 +136,7 @@ choice
config MACH_SUN4I
bool "sun4i (Allwinner A10)"
- select CPU_V7
+ select CPU_V7A
select ARM_CORTEX_CPU_IS_UP
select DRAM_SUN4I
select SUNXI_GEN_SUN4I
@@ -144,7 +144,7 @@ config MACH_SUN4I
config MACH_SUN5I
bool "sun5i (Allwinner A13)"
- select CPU_V7
+ select CPU_V7A
select ARM_CORTEX_CPU_IS_UP
select DRAM_SUN4I
select SUNXI_GEN_SUN4I
@@ -153,7 +153,7 @@ config MACH_SUN5I
config MACH_SUN6I
bool "sun6i (Allwinner A31)"
- select CPU_V7
+ select CPU_V7A
select CPU_V7_HAS_NONSEC
select CPU_V7_HAS_VIRT
select ARCH_SUPPORT_PSCI
@@ -166,7 +166,7 @@ config MACH_SUN6I
config MACH_SUN7I
bool "sun7i (Allwinner A20)"
- select CPU_V7
+ select CPU_V7A
select CPU_V7_HAS_NONSEC
select CPU_V7_HAS_VIRT
select ARCH_SUPPORT_PSCI
@@ -177,7 +177,7 @@ config MACH_SUN7I
config MACH_SUN8I_A23
bool "sun8i (Allwinner A23)"
- select CPU_V7
+ select CPU_V7A
select CPU_V7_HAS_NONSEC
select CPU_V7_HAS_VIRT
select ARCH_SUPPORT_PSCI
@@ -189,7 +189,7 @@ config MACH_SUN8I_A23
config MACH_SUN8I_A33
bool "sun8i (Allwinner A33)"
- select CPU_V7
+ select CPU_V7A
select CPU_V7_HAS_NONSEC
select CPU_V7_HAS_VIRT
select ARCH_SUPPORT_PSCI
@@ -201,7 +201,7 @@ config MACH_SUN8I_A33
config MACH_SUN8I_A83T
bool "sun8i (Allwinner A83T)"
- select CPU_V7
+ select CPU_V7A
select DRAM_SUN8I_A83T
select SUNXI_GEN_SUN6I
select MMC_SUNXI_HAS_NEW_MODE
@@ -209,7 +209,7 @@ config MACH_SUN8I_A83T
config MACH_SUN8I_H3
bool "sun8i (Allwinner H3)"
- select CPU_V7
+ select CPU_V7A
select CPU_V7_HAS_NONSEC
select CPU_V7_HAS_VIRT
select ARCH_SUPPORT_PSCI
@@ -218,7 +218,7 @@ config MACH_SUN8I_H3
config MACH_SUN8I_R40
bool "sun8i (Allwinner R40)"
- select CPU_V7
+ select CPU_V7A
select CPU_V7_HAS_NONSEC
select CPU_V7_HAS_VIRT
select ARCH_SUPPORT_PSCI
@@ -229,7 +229,7 @@ config MACH_SUN8I_R40
config MACH_SUN8I_V3S
bool "sun8i (Allwinner V3s)"
- select CPU_V7
+ select CPU_V7A
select CPU_V7_HAS_NONSEC
select CPU_V7_HAS_VIRT
select ARCH_SUPPORT_PSCI
@@ -241,7 +241,7 @@ config MACH_SUN8I_V3S
config MACH_SUN9I
bool "sun9i (Allwinner A80)"
- select CPU_V7
+ select CPU_V7A
select DRAM_SUN9I
select SUN6I_PRCM
select SUNXI_HIGH_SRAM
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index fd0082d22a..d565f5d331 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -49,7 +49,7 @@ config TEGRA_NO_BPMP
config TEGRA_ARMV7_COMMON
bool "Tegra 32-bit common options"
- select CPU_V7
+ select CPU_V7A
select SPL
select SPL_BOARD_INIT if SPL
select SUPPORT_SPL
diff --git a/arch/arm/mach-uniphier/Kconfig b/arch/arm/mach-uniphier/Kconfig
index cc759b3e01..91bea776e6 100644
--- a/arch/arm/mach-uniphier/Kconfig
+++ b/arch/arm/mach-uniphier/Kconfig
@@ -5,7 +5,7 @@ config SYS_CONFIG_NAME
config ARCH_UNIPHIER_32BIT
bool
- select CPU_V7
+ select CPU_V7A
select CPU_V7_HAS_NONSEC
select ARMV7_NONSEC
select ARCH_SUPPORT_PSCI
diff --git a/arch/arm/mach-uniphier/Makefile b/arch/arm/mach-uniphier/Makefile
index 7a0b25ad51..16890da22c 100644
--- a/arch/arm/mach-uniphier/Makefile
+++ b/arch/arm/mach-uniphier/Makefile
@@ -33,5 +33,5 @@ obj-y += dram/
obj-$(CONFIG_DEBUG_UART_UNIPHIER) += debug-uart/
-obj-$(CONFIG_CPU_V7) += arm32/
+obj-$(CONFIG_CPU_V7A) += arm32/
obj-$(CONFIG_ARM64) += arm64/
diff --git a/cmd/Kconfig b/cmd/Kconfig
index bc1d2f31c0..511d9117a0 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -1103,7 +1103,7 @@ config BOOTP_PXE_CLIENTARCH
config BOOTP_VCI_STRING
string
depends on CMD_BOOTP
- default "U-Boot.armv7" if CPU_V7 || CPU_V7M
+ default "U-Boot.armv7" if CPU_V7A || CPU_V7M
default "U-Boot.armv8" if ARM64
default "U-Boot.arm" if ARM
default "U-Boot"
diff --git a/drivers/serial/arm_dcc.c b/drivers/serial/arm_dcc.c
index 07981e18ee..b6769a94cf 100644
--- a/drivers/serial/arm_dcc.c
+++ b/drivers/serial/arm_dcc.c
@@ -20,7 +20,7 @@
#include <dm.h>
#include <serial.h>
-#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V7)
+#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V7A)
/*
* ARMV6 & ARMV7
*/
--
2.17.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH v2 3/7] arm: v7: Kconfig: Add entry for MMU
2018-04-26 12:51 [U-Boot] [PATCH v2 0/7] arm: Introduce v7R support Lokesh Vutla
2018-04-26 12:51 ` [U-Boot] [PATCH v2 1/7] arm: v7: Update VBAR only if available Lokesh Vutla
2018-04-26 12:51 ` [U-Boot] [PATCH v2 2/7] arm: v7: Kconfig: Rename CPU_V7 as CPU_V7A Lokesh Vutla
@ 2018-04-26 12:51 ` Lokesh Vutla
2018-05-08 0:45 ` [U-Boot] [U-Boot,v2,3/7] " Tom Rini
2018-04-26 12:51 ` [U-Boot] [PATCH v2 4/7] arm: v7: Kconfig: Introduce SYS_ARM_CACHE_CP15 Lokesh Vutla
` (4 subsequent siblings)
7 siblings, 1 reply; 18+ messages in thread
From: Lokesh Vutla @ 2018-04-26 12:51 UTC (permalink / raw)
To: u-boot
Add a Kconfig entry for MMU and imply for all platforms using
cache-cp15.c containing MMU setup. Using imply instead of select so that
MMU can be disabled by defconfigs when not needed.
Tested-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
---
arch/arm/Kconfig | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index df475626e7..8854227d9a 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -74,6 +74,12 @@ config ARM_ASM_UNIFIED
config THUMB2_KERNEL
bool
+config SYS_ARM_MMU
+ bool "MMU-based Paged Memory Management Support"
+ help
+ Select if you want MMU-based virtualised addressing space
+ support by paged memory management.
+
# If set, the workarounds for these ARM errata are applied early during U-Boot
# startup. Note that in general these options force the workarounds to be
# applied; no CPU-type/version detection exists, unlike the similar options in
@@ -158,33 +164,40 @@ config ARM_ERRATA_855873
config CPU_ARM720T
bool
select SYS_CACHE_SHIFT_5
+ imply SYS_ARM_MMU
config CPU_ARM920T
bool
select SYS_CACHE_SHIFT_5
+ imply SYS_ARM_MMU
config CPU_ARM926EJS
bool
select SYS_CACHE_SHIFT_5
+ imply SYS_ARM_MMU
config CPU_ARM946ES
bool
select SYS_CACHE_SHIFT_5
+ imply SYS_ARM_MMU
config CPU_ARM1136
bool
select SYS_CACHE_SHIFT_5
+ imply SYS_ARM_MMU
config CPU_ARM1176
bool
select HAS_VBAR
select SYS_CACHE_SHIFT_5
+ imply SYS_ARM_MMU
config CPU_V7A
bool
select HAS_VBAR
select HAS_THUMB2
select SYS_CACHE_SHIFT_6
+ imply SYS_ARM_MMU
config CPU_V7M
bool
@@ -195,10 +208,12 @@ config CPU_V7M
config CPU_PXA
bool
select SYS_CACHE_SHIFT_5
+ imply SYS_ARM_MMU
config CPU_SA1100
bool
select SYS_CACHE_SHIFT_5
+ imply SYS_ARM_MMU
config SYS_CPU
default "arm720t" if CPU_ARM720T
--
2.17.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH v2 4/7] arm: v7: Kconfig: Introduce SYS_ARM_CACHE_CP15
2018-04-26 12:51 [U-Boot] [PATCH v2 0/7] arm: Introduce v7R support Lokesh Vutla
` (2 preceding siblings ...)
2018-04-26 12:51 ` [U-Boot] [PATCH v2 3/7] arm: v7: Kconfig: Add entry for MMU Lokesh Vutla
@ 2018-04-26 12:51 ` Lokesh Vutla
2018-05-08 0:45 ` [U-Boot] [U-Boot, v2, " Tom Rini
2018-04-26 12:51 ` [U-Boot] [PATCH v2 5/7] arm: v7R: Add initial support Lokesh Vutla
` (3 subsequent siblings)
7 siblings, 1 reply; 18+ messages in thread
From: Lokesh Vutla @ 2018-04-26 12:51 UTC (permalink / raw)
To: u-boot
Certain ARM architectures like ARMv7-A, ARMv7-R has support for
enabling caches using CP15 registers. To have a common support
for all these architectures, introduce a Kconfig symbol
SYS_ARM_CACHE_CP15 that selects cache-cp15.c
Tested-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
---
arch/arm/Kconfig | 7 +++++++
arch/arm/lib/Makefile | 6 +-----
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 8854227d9a..8efaccbcb8 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -74,8 +74,15 @@ config ARM_ASM_UNIFIED
config THUMB2_KERNEL
bool
+config SYS_ARM_CACHE_CP15
+ bool "CP15 based cache enabling support"
+ help
+ Select this if your processor suports enabling caches by using
+ CP15 registers.
+
config SYS_ARM_MMU
bool "MMU-based Paged Memory Management Support"
+ select SYS_ARM_CACHE_CP15
help
Select if you want MMU-based virtualised addressing space
support by paged memory management.
diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
index 3d3085e917..39c0c693dc 100644
--- a/arch/arm/lib/Makefile
+++ b/arch/arm/lib/Makefile
@@ -63,11 +63,7 @@ obj-y += reset.o
endif
obj-y += cache.o
-ifndef CONFIG_ARM64
-ifndef CONFIG_CPU_V7M
-obj-y += cache-cp15.o
-endif
-endif
+obj-$(CONFIG_SYS_ARM_CACHE_CP15) += cache-cp15.o
obj-y += psci-dt.o
--
2.17.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH v2 5/7] arm: v7R: Add initial support
2018-04-26 12:51 [U-Boot] [PATCH v2 0/7] arm: Introduce v7R support Lokesh Vutla
` (3 preceding siblings ...)
2018-04-26 12:51 ` [U-Boot] [PATCH v2 4/7] arm: v7: Kconfig: Introduce SYS_ARM_CACHE_CP15 Lokesh Vutla
@ 2018-04-26 12:51 ` Lokesh Vutla
2018-05-08 0:46 ` [U-Boot] [U-Boot,v2,5/7] " Tom Rini
2018-04-26 12:51 ` [U-Boot] [PATCH v2 6/7] arm: v7R: Add support for MPU Lokesh Vutla
` (2 subsequent siblings)
7 siblings, 1 reply; 18+ messages in thread
From: Lokesh Vutla @ 2018-04-26 12:51 UTC (permalink / raw)
To: u-boot
From: Michal Simek <michal.simek@xilinx.com>
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 | 7 +++++++
arch/arm/Makefile | 2 ++
arch/arm/cpu/armv7/start.S | 2 ++
cmd/Kconfig | 2 +-
4 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 8efaccbcb8..fcdbded22a 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -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
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 2979ad86fd..3f5343bc01 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -18,6 +18,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
@@ -41,6 +42,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
diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
index 937f7051fe..29b51f2a0f 100644
--- a/arch/arm/cpu/armv7/start.S
+++ b/arch/arm/cpu/armv7/start.S
@@ -82,7 +82,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
diff --git a/cmd/Kconfig b/cmd/Kconfig
index 511d9117a0..9c1115db59 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -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"
--
2.17.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH v2 6/7] arm: v7R: Add support for MPU
2018-04-26 12:51 [U-Boot] [PATCH v2 0/7] arm: Introduce v7R support Lokesh Vutla
` (4 preceding siblings ...)
2018-04-26 12:51 ` [U-Boot] [PATCH v2 5/7] arm: v7R: Add initial support Lokesh Vutla
@ 2018-04-26 12:51 ` Lokesh Vutla
2018-04-26 19:11 ` Tom Rini
2018-05-08 0:46 ` [U-Boot] [U-Boot,v2,6/7] " Tom Rini
2018-04-26 12:51 ` [U-Boot] [PATCH v2 7/7] arm: v7R: Add support for enabling caches Lokesh Vutla
2018-04-26 15:15 ` [U-Boot] [PATCH v2 0/7] arm: Introduce v7R support Alexander Graf
7 siblings, 2 replies; 18+ messages in thread
From: Lokesh Vutla @ 2018-04-26 12:51 UTC (permalink / raw)
To: u-boot
The Memory Protection Unit(MPU) allows to partition memory into regions
and set individual protection attributes for each region. In absence
of MPU a default map[1] will take effect. Add support for configuring
MPU on Cortex-R, by reusing the existing support for Cortex-M processor.
[1] http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0460d/I1002400.html
Tested-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
---
arch/arm/Kconfig | 12 +++
arch/arm/cpu/armv7/Makefile | 2 +
arch/arm/cpu/armv7/mpu_v7r.c | 109 +++++++++++++++++++++++++
arch/arm/cpu/armv7m/Makefile | 3 +-
arch/arm/cpu/armv7m/mpu.c | 43 +---------
arch/arm/include/asm/armv7_mpu.h | 131 ++++++++++++++++++++++++++++++
arch/arm/include/asm/armv7m_mpu.h | 67 ---------------
arch/arm/mach-stm32/soc.c | 2 +-
8 files changed, 259 insertions(+), 110 deletions(-)
create mode 100644 arch/arm/cpu/armv7/mpu_v7r.c
create mode 100644 arch/arm/include/asm/armv7_mpu.h
delete mode 100644 arch/arm/include/asm/armv7m_mpu.h
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index fcdbded22a..99fb11435b 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -87,6 +87,15 @@ config SYS_ARM_MMU
Select if you want MMU-based virtualised addressing space
support by paged memory management.
+config SYS_ARM_MPU
+ bool 'Use the ARM v7 PMSA Compliant MPU'
+ help
+ Some ARM systems without an MMU have instead a Memory Protection
+ Unit (MPU) that defines the type and permissions for regions of
+ memory.
+ If your CPU has an MPU then you should choose 'y' here unless you
+ know that you do not want to use the MPU.
+
# If set, the workarounds for these ARM errata are applied early during U-Boot
# startup. Note that in general these options force the workarounds to be
# applied; no CPU-type/version detection exists, unlike the similar options in
@@ -211,11 +220,14 @@ config CPU_V7M
select HAS_THUMB2
select THUMB2_KERNEL
select SYS_CACHE_SHIFT_5
+ select SYS_ARM_MPU
config CPU_V7R
bool
select HAS_THUMB2
select SYS_CACHE_SHIFT_6
+ select SYS_ARM_MPU
+ select SYS_ARM_CACHE_CP15
config CPU_PXA
bool
diff --git a/arch/arm/cpu/armv7/Makefile b/arch/arm/cpu/armv7/Makefile
index b14ee54519..d085b3be93 100644
--- a/arch/arm/cpu/armv7/Makefile
+++ b/arch/arm/cpu/armv7/Makefile
@@ -12,6 +12,8 @@ obj-y += cache_v7.o cache_v7_asm.o
obj-y += cpu.o cp15.o
obj-y += syslib.o
+obj-$(CONFIG_SYS_ARM_MPU) += mpu_v7r.o
+
ifneq ($(CONFIG_SKIP_LOWLEVEL_INIT),y)
obj-y += lowlevel_init.o
endif
diff --git a/arch/arm/cpu/armv7/mpu_v7r.c b/arch/arm/cpu/armv7/mpu_v7r.c
new file mode 100644
index 0000000000..1576511ec5
--- /dev/null
+++ b/arch/arm/cpu/armv7/mpu_v7r.c
@@ -0,0 +1,109 @@
+/*
+ * Cortex-R Memory Protection Unit specific code
+ *
+ * Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
+ * Lokesh Vutla <lokeshvutla@ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <asm/armv7.h>
+#include <asm/system.h>
+#include <asm/barriers.h>
+#include <linux/compiler.h>
+
+#include <asm/armv7_mpu.h>
+
+/* MPU Type register definitions */
+#define MPUIR_S_SHIFT 0
+#define MPUIR_S_MASK BIT(MPUIR_S_SHIFT)
+#define MPUIR_DREGION_SHIFT 8
+#define MPUIR_DREGION_MASK (0xff << 8)
+
+/**
+ * Note:
+ * The Memory Protection Unit(MPU) allows to partition memory into regions
+ * and set individual protection attributes for each region. In absence
+ * of MPU a default map[1] will take effect. make sure to run this code
+ * from a region which has execution permissions by default.
+ * [1] http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0460d/I1002400.html
+ */
+
+void disable_mpu(void)
+{
+ u32 reg;
+
+ reg = get_cr();
+ reg &= ~CR_M;
+ dsb();
+ set_cr(reg);
+ isb();
+}
+
+void enable_mpu(void)
+{
+ u32 reg;
+
+ reg = get_cr();
+ reg |= CR_M;
+ dsb();
+ set_cr(reg);
+ isb();
+}
+
+int mpu_enabled(void)
+{
+ return get_cr() & CR_M;
+}
+
+void mpu_config(struct mpu_region_config *rgn)
+{
+ u32 attr, val;
+
+ attr = get_attr_encoding(rgn->mr_attr);
+
+ /* MPU Region Number Register */
+ asm volatile ("mcr p15, 0, %0, c6, c2, 0" : : "r" (rgn->region_no));
+
+ /* MPU Region Base Address Register */
+ asm volatile ("mcr p15, 0, %0, c6, c1, 0" : : "r" (rgn->start_addr));
+
+ /* MPU Region Size and Enable Register */
+ if (rgn->reg_size)
+ val = (rgn->reg_size << REGION_SIZE_SHIFT) | ENABLE_REGION;
+ else
+ val = DISABLE_REGION;
+ asm volatile ("mcr p15, 0, %0, c6, c1, 2" : : "r" (val));
+
+ /* MPU Region Access Control Register */
+ val = rgn->xn << XN_SHIFT | rgn->ap << AP_SHIFT | attr;
+ asm volatile ("mcr p15, 0, %0, c6, c1, 4" : : "r" (val));
+}
+
+void setup_mpu_regions(struct mpu_region_config *rgns, u32 num_rgns)
+{
+ u32 num, i;
+
+ asm volatile ("mrc p15, 0, %0, c0, c0, 4" : "=r" (num));
+ num = (num & MPUIR_DREGION_MASK) >> MPUIR_DREGION_SHIFT;
+ /* Regions to be configured cannot be greater than available regions */
+ if (num < num_rgns)
+ num_rgns = num;
+ /**
+ * Assuming dcache might not be enabled@this point, disabling
+ * and invalidating only icache.
+ */
+ icache_disable();
+ invalidate_icache_all();
+
+ disable_mpu();
+
+ for (i = 0; i < num_rgns; i++)
+ mpu_config(&rgns[i]);
+
+ enable_mpu();
+
+ icache_enable();
+}
diff --git a/arch/arm/cpu/armv7m/Makefile b/arch/arm/cpu/armv7m/Makefile
index 257fc7faf3..c1742cb967 100644
--- a/arch/arm/cpu/armv7m/Makefile
+++ b/arch/arm/cpu/armv7m/Makefile
@@ -6,5 +6,6 @@
#
extra-y := start.o
-obj-y += cpu.o cache.o mpu.o
+obj-y += cpu.o cache.o
+obj-$(CONFIG_SYS_ARM_MPU) += mpu.o
obj-$(CONFIG_SYS_ARCH_TIMER) += systick-timer.o
diff --git a/arch/arm/cpu/armv7m/mpu.c b/arch/arm/cpu/armv7m/mpu.c
index e4d090e5de..6c419e07f5 100644
--- a/arch/arm/cpu/armv7m/mpu.c
+++ b/arch/arm/cpu/armv7m/mpu.c
@@ -7,7 +7,7 @@
#include <linux/bitops.h>
#include <asm/armv7m.h>
-#include <asm/armv7m_mpu.h>
+#include <asm/armv7_mpu.h>
#include <asm/io.h>
#define V7M_MPU_CTRL_ENABLE BIT(0)
@@ -16,20 +16,6 @@
#define V7M_MPU_CTRL_PRIVDEFENA BIT(2)
#define VALID_REGION BIT(4)
-#define ENABLE_REGION BIT(0)
-
-#define AP_SHIFT 24
-#define XN_SHIFT 28
-#define TEX_SHIFT 19
-#define S_SHIFT 18
-#define C_SHIFT 17
-#define B_SHIFT 16
-#define REGION_SIZE_SHIFT 1
-
-#define CACHEABLE (1 << C_SHIFT)
-#define BUFFERABLE (1 << B_SHIFT)
-#define SHAREABLE (1 << S_SHIFT)
-
void disable_mpu(void)
{
writel(0, &V7M_MPU->ctrl);
@@ -48,32 +34,7 @@ void mpu_config(struct mpu_region_config *reg_config)
{
uint32_t attr;
- switch (reg_config->mr_attr) {
- case STRONG_ORDER:
- attr = SHAREABLE;
- break;
- case SHARED_WRITE_BUFFERED:
- attr = BUFFERABLE;
- break;
- case O_I_WT_NO_WR_ALLOC:
- attr = CACHEABLE;
- break;
- case O_I_WB_NO_WR_ALLOC:
- attr = CACHEABLE | BUFFERABLE;
- break;
- case O_I_NON_CACHEABLE:
- attr = 1 << TEX_SHIFT;
- break;
- case O_I_WB_RD_WR_ALLOC:
- attr = (1 << TEX_SHIFT) | CACHEABLE | BUFFERABLE;
- break;
- case DEVICE_NON_SHARED:
- attr = (2 << TEX_SHIFT) | BUFFERABLE;
- break;
- default:
- attr = 0; /* strongly ordered */
- break;
- };
+ attr = get_attr_encoding(reg_config->mr_attr);
writel(reg_config->start_addr | VALID_REGION | reg_config->region_no,
&V7M_MPU->rbar);
diff --git a/arch/arm/include/asm/armv7_mpu.h b/arch/arm/include/asm/armv7_mpu.h
new file mode 100644
index 0000000000..72d576d823
--- /dev/null
+++ b/arch/arm/include/asm/armv7_mpu.h
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2017, STMicroelectronics - All Rights Reserved
+ * Author(s): Vikas Manocha, <vikas.manocha@st.com> for STMicroelectronics.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef _ASM_ARMV7_MPU_H
+#define _ASM_ARMV7_MPU_H
+
+#ifdef CONFIG_CPU_V7M
+#define AP_SHIFT 24
+#define XN_SHIFT 28
+#define TEX_SHIFT 19
+#define S_SHIFT 18
+#define C_SHIFT 17
+#define B_SHIFT 16
+#else /* CONFIG_CPU_V7R */
+#define XN_SHIFT 12
+#define AP_SHIFT 8
+#define TEX_SHIFT 3
+#define S_SHIFT 2
+#define C_SHIFT 1
+#define B_SHIFT 0
+#endif /* CONFIG_CPU_V7R */
+
+#define CACHEABLE BIT(C_SHIFT)
+#define BUFFERABLE BIT(B_SHIFT)
+#define SHAREABLE BIT(S_SHIFT)
+#define REGION_SIZE_SHIFT 1
+#define ENABLE_REGION BIT(0)
+#define DISABLE_REGION 0
+
+enum region_number {
+ REGION_0 = 0,
+ REGION_1,
+ REGION_2,
+ REGION_3,
+ REGION_4,
+ REGION_5,
+ REGION_6,
+ REGION_7,
+};
+
+enum ap {
+ NO_ACCESS = 0,
+ PRIV_RW_USR_NO,
+ PRIV_RW_USR_RO,
+ PRIV_RW_USR_RW,
+ UNPREDICTABLE,
+ PRIV_RO_USR_NO,
+ PRIV_RO_USR_RO,
+};
+
+enum mr_attr {
+ STRONG_ORDER = 0,
+ SHARED_WRITE_BUFFERED,
+ O_I_WT_NO_WR_ALLOC,
+ O_I_WB_NO_WR_ALLOC,
+ O_I_NON_CACHEABLE,
+ O_I_WB_RD_WR_ALLOC,
+ DEVICE_NON_SHARED,
+};
+enum size {
+ REGION_8MB = 22,
+ REGION_16MB,
+ REGION_32MB,
+ REGION_64MB,
+ REGION_128MB,
+ REGION_256MB,
+ REGION_512MB,
+ REGION_1GB,
+ REGION_2GB,
+ REGION_4GB,
+};
+
+enum xn {
+ XN_DIS = 0,
+ XN_EN,
+};
+
+struct mpu_region_config {
+ uint32_t start_addr;
+ enum region_number region_no;
+ enum xn xn;
+ enum ap ap;
+ enum mr_attr mr_attr;
+ enum size reg_size;
+};
+
+void disable_mpu(void);
+void enable_mpu(void);
+int mpu_enabled(void);
+void mpu_config(struct mpu_region_config *reg_config);
+void setup_mpu_regions(struct mpu_region_config *rgns, u32 num_rgns);
+
+static inline u32 get_attr_encoding(u32 mr_attr)
+{
+ u32 attr;
+
+ switch (mr_attr) {
+ case STRONG_ORDER:
+ attr = SHAREABLE;
+ break;
+ case SHARED_WRITE_BUFFERED:
+ attr = BUFFERABLE;
+ break;
+ case O_I_WT_NO_WR_ALLOC:
+ attr = CACHEABLE;
+ break;
+ case O_I_WB_NO_WR_ALLOC:
+ attr = CACHEABLE | BUFFERABLE;
+ break;
+ case O_I_NON_CACHEABLE:
+ attr = 1 << TEX_SHIFT;
+ break;
+ case O_I_WB_RD_WR_ALLOC:
+ attr = (1 << TEX_SHIFT) | CACHEABLE | BUFFERABLE;
+ break;
+ case DEVICE_NON_SHARED:
+ attr = (2 << TEX_SHIFT) | BUFFERABLE;
+ break;
+ default:
+ attr = 0; /* strongly ordered */
+ break;
+ };
+
+ return attr;
+}
+
+#endif /* _ASM_ARMV7_MPU_H */
diff --git a/arch/arm/include/asm/armv7m_mpu.h b/arch/arm/include/asm/armv7m_mpu.h
deleted file mode 100644
index 0f73cf1dc0..0000000000
--- a/arch/arm/include/asm/armv7m_mpu.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2017, STMicroelectronics - All Rights Reserved
- * Author(s): Vikas Manocha, <vikas.manocha@st.com> for STMicroelectronics.
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-enum region_number {
- REGION_0 = 0,
- REGION_1,
- REGION_2,
- REGION_3,
- REGION_4,
- REGION_5,
- REGION_6,
- REGION_7,
-};
-
-enum ap {
- NO_ACCESS = 0,
- PRIV_RW_USR_NO,
- PRIV_RW_USR_RO,
- PRIV_RW_USR_RW,
- UNPREDICTABLE,
- PRIV_RO_USR_NO,
- PRIV_RO_USR_RO,
-};
-
-enum mr_attr {
- STRONG_ORDER = 0,
- SHARED_WRITE_BUFFERED,
- O_I_WT_NO_WR_ALLOC,
- O_I_WB_NO_WR_ALLOC,
- O_I_NON_CACHEABLE,
- O_I_WB_RD_WR_ALLOC,
- DEVICE_NON_SHARED,
-};
-enum size {
- REGION_8MB = 22,
- REGION_16MB,
- REGION_32MB,
- REGION_64MB,
- REGION_128MB,
- REGION_256MB,
- REGION_512MB,
- REGION_1GB,
- REGION_2GB,
- REGION_4GB,
-};
-
-enum xn {
- XN_DIS = 0,
- XN_EN,
-};
-
-struct mpu_region_config {
- uint32_t start_addr;
- enum region_number region_no;
- enum xn xn;
- enum ap ap;
- enum mr_attr mr_attr;
- enum size reg_size;
-};
-
-void disable_mpu(void);
-void enable_mpu(void);
-void mpu_config(struct mpu_region_config *reg_config);
diff --git a/arch/arm/mach-stm32/soc.c b/arch/arm/mach-stm32/soc.c
index f6fd0b2e23..f4c5bb16ff 100644
--- a/arch/arm/mach-stm32/soc.c
+++ b/arch/arm/mach-stm32/soc.c
@@ -7,7 +7,7 @@
#include <common.h>
#include <asm/io.h>
-#include <asm/armv7m_mpu.h>
+#include <asm/armv7_mpu.h>
int arch_cpu_init(void)
{
--
2.17.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH v2 7/7] arm: v7R: Add support for enabling caches
2018-04-26 12:51 [U-Boot] [PATCH v2 0/7] arm: Introduce v7R support Lokesh Vutla
` (5 preceding siblings ...)
2018-04-26 12:51 ` [U-Boot] [PATCH v2 6/7] arm: v7R: Add support for MPU Lokesh Vutla
@ 2018-04-26 12:51 ` Lokesh Vutla
2018-04-26 19:11 ` Tom Rini
2018-05-08 0:46 ` [U-Boot] [U-Boot, v2, " Tom Rini
2018-04-26 15:15 ` [U-Boot] [PATCH v2 0/7] arm: Introduce v7R support Alexander Graf
7 siblings, 2 replies; 18+ messages in thread
From: Lokesh Vutla @ 2018-04-26 12:51 UTC (permalink / raw)
To: u-boot
Cache maintenance procedure is same for v7A and v7R
processors. So re-use cache-cp15.c file except for
mmu parts.
Tested-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
---
arch/arm/cpu/armv7/mpu_v7r.c | 11 +++++++++++
arch/arm/lib/cache-cp15.c | 12 +++++++++++-
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/arch/arm/cpu/armv7/mpu_v7r.c b/arch/arm/cpu/armv7/mpu_v7r.c
index 1576511ec5..084ebd383e 100644
--- a/arch/arm/cpu/armv7/mpu_v7r.c
+++ b/arch/arm/cpu/armv7/mpu_v7r.c
@@ -107,3 +107,14 @@ void setup_mpu_regions(struct mpu_region_config *rgns, u32 num_rgns)
icache_enable();
}
+
+void enable_caches(void)
+{
+ /*
+ * setup_mpu_regions() might have enabled Icache. So add a check
+ * before enabling Icache
+ */
+ if (!icache_status())
+ icache_enable();
+ dcache_enable();
+}
diff --git a/arch/arm/lib/cache-cp15.c b/arch/arm/lib/cache-cp15.c
index b09c631636..0e643395a0 100644
--- a/arch/arm/lib/cache-cp15.c
+++ b/arch/arm/lib/cache-cp15.c
@@ -9,11 +9,13 @@
#include <asm/system.h>
#include <asm/cache.h>
#include <linux/compiler.h>
+#include <asm/armv7_mpu.h>
#if !(defined(CONFIG_SYS_ICACHE_OFF) && defined(CONFIG_SYS_DCACHE_OFF))
DECLARE_GLOBAL_DATA_PTR;
+#ifdef CONFIG_SYS_ARM_MMU
__weak void arm_init_before_mmu(void)
{
}
@@ -202,15 +204,23 @@ static int mmu_enabled(void)
{
return get_cr() & CR_M;
}
+#endif /* CONFIG_SYS_ARM_MMU */
/* cache_bit must be either CR_I or CR_C */
static void cache_enable(uint32_t cache_bit)
{
uint32_t reg;
- /* The data cache is not active unless the mmu is enabled too */
+ /* The data cache is not active unless the mmu/mpu is enabled too */
+#ifdef CONFIG_SYS_ARM_MMU
if ((cache_bit == CR_C) && !mmu_enabled())
mmu_setup();
+#elif defined(CONFIG_SYS_ARM_MPU)
+ if ((cache_bit == CR_C) && !mpu_enabled()) {
+ printf("Consider enabling MPU before enabling caches\n");
+ return;
+ }
+#endif
reg = get_cr(); /* get control reg. */
set_cr(reg | cache_bit);
}
--
2.17.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH v2 0/7] arm: Introduce v7R support
2018-04-26 12:51 [U-Boot] [PATCH v2 0/7] arm: Introduce v7R support Lokesh Vutla
` (6 preceding siblings ...)
2018-04-26 12:51 ` [U-Boot] [PATCH v2 7/7] arm: v7R: Add support for enabling caches Lokesh Vutla
@ 2018-04-26 15:15 ` Alexander Graf
7 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2018-04-26 15:15 UTC (permalink / raw)
To: u-boot
On 04/26/2018 02:51 PM, Lokesh Vutla wrote:
> 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. This series adds minimal
> support for v7-R architecture by reusing the v7 support. Also adding
> support for MPU.
>
> Travis-ci build report: https://travis-ci.org/lokeshvutla/u-boot/builds/371442638
Looks pretty clean to me :).
Reviewed-by: Alexander Graf <agraf@suse.de>
Alex
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH v2 6/7] arm: v7R: Add support for MPU
2018-04-26 12:51 ` [U-Boot] [PATCH v2 6/7] arm: v7R: Add support for MPU Lokesh Vutla
@ 2018-04-26 19:11 ` Tom Rini
2018-05-08 0:46 ` [U-Boot] [U-Boot,v2,6/7] " Tom Rini
1 sibling, 0 replies; 18+ messages in thread
From: Tom Rini @ 2018-04-26 19:11 UTC (permalink / raw)
To: u-boot
On Thu, Apr 26, 2018 at 06:21:30PM +0530, Lokesh Vutla wrote:
> The Memory Protection Unit(MPU) allows to partition memory into regions
> and set individual protection attributes for each region. In absence
> of MPU a default map[1] will take effect. Add support for configuring
> MPU on Cortex-R, by reusing the existing support for Cortex-M processor.
>
> [1] http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0460d/I1002400.html
>
> Tested-by: Michal Simek <michal.simek@xilinx.com>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180426/18c5da3b/attachment.sig>
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH v2 7/7] arm: v7R: Add support for enabling caches
2018-04-26 12:51 ` [U-Boot] [PATCH v2 7/7] arm: v7R: Add support for enabling caches Lokesh Vutla
@ 2018-04-26 19:11 ` Tom Rini
2018-05-08 0:46 ` [U-Boot] [U-Boot, v2, " Tom Rini
1 sibling, 0 replies; 18+ messages in thread
From: Tom Rini @ 2018-04-26 19:11 UTC (permalink / raw)
To: u-boot
On Thu, Apr 26, 2018 at 06:21:31PM +0530, Lokesh Vutla wrote:
> Cache maintenance procedure is same for v7A and v7R
> processors. So re-use cache-cp15.c file except for
> mmu parts.
>
> Tested-by: Michal Simek <michal.simek@xilinx.com>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180426/13b9dc29/attachment.sig>
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [U-Boot, v2, 1/7] arm: v7: Update VBAR only if available
2018-04-26 12:51 ` [U-Boot] [PATCH v2 1/7] arm: v7: Update VBAR only if available Lokesh Vutla
@ 2018-05-08 0:45 ` Tom Rini
0 siblings, 0 replies; 18+ messages in thread
From: Tom Rini @ 2018-05-08 0:45 UTC (permalink / raw)
To: u-boot
On Thu, Apr 26, 2018 at 06:21:25PM +0530, Lokesh Vutla wrote:
> Not all ARM V7 based cpus has VBAR for remapping
> vector base address. So, update VBAR only if it available.
>
> Reviewed-by: Tom Rini <trini@konsulko.com>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180507/323dfb25/attachment.sig>
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [U-Boot, v2, 2/7] arm: v7: Kconfig: Rename CPU_V7 as CPU_V7A
2018-04-26 12:51 ` [U-Boot] [PATCH v2 2/7] arm: v7: Kconfig: Rename CPU_V7 as CPU_V7A Lokesh Vutla
@ 2018-05-08 0:45 ` Tom Rini
0 siblings, 0 replies; 18+ messages in thread
From: Tom Rini @ 2018-05-08 0:45 UTC (permalink / raw)
To: u-boot
On Thu, Apr 26, 2018 at 06:21:26PM +0530, Lokesh Vutla wrote:
> Currently CPU_V7 kconfig symbol supports only ARMv7A architectures under
> armv7 folder. This led to a misconception of creating separate folders
> for armv7m and armv7r. There is no reason to create separate folder for
> other armv7 based architectures when it can co-exist with few Kconfig
> symbols.
>
> As a first step towards a common folder, rename CPU_V7 as CPUV7A. Later
> separate Kconfig symbols can be added for CPU_V7R and CPU_V7M and
> can co exist in the same folder.
>
> Reviewed-by: Tom Rini <trini@konsulko.com>
> Tested-by: Michal Simek <michal.simek@xilinx.com>
> Suggested-by: Alexander Graf <agraf@suse.de>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180507/0eeab69d/attachment.sig>
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [U-Boot,v2,3/7] arm: v7: Kconfig: Add entry for MMU
2018-04-26 12:51 ` [U-Boot] [PATCH v2 3/7] arm: v7: Kconfig: Add entry for MMU Lokesh Vutla
@ 2018-05-08 0:45 ` Tom Rini
0 siblings, 0 replies; 18+ messages in thread
From: Tom Rini @ 2018-05-08 0:45 UTC (permalink / raw)
To: u-boot
On Thu, Apr 26, 2018 at 06:21:27PM +0530, Lokesh Vutla wrote:
> Add a Kconfig entry for MMU and imply for all platforms using
> cache-cp15.c containing MMU setup. Using imply instead of select so that
> MMU can be disabled by defconfigs when not needed.
>
> Tested-by: Michal Simek <michal.simek@xilinx.com>
> Reviewed-by: Tom Rini <trini@konsulko.com>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180507/3863ad9c/attachment.sig>
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [U-Boot, v2, 4/7] arm: v7: Kconfig: Introduce SYS_ARM_CACHE_CP15
2018-04-26 12:51 ` [U-Boot] [PATCH v2 4/7] arm: v7: Kconfig: Introduce SYS_ARM_CACHE_CP15 Lokesh Vutla
@ 2018-05-08 0:45 ` Tom Rini
0 siblings, 0 replies; 18+ messages in thread
From: Tom Rini @ 2018-05-08 0:45 UTC (permalink / raw)
To: u-boot
On Thu, Apr 26, 2018 at 06:21:28PM +0530, Lokesh Vutla wrote:
> Certain ARM architectures like ARMv7-A, ARMv7-R has support for
> enabling caches using CP15 registers. To have a common support
> for all these architectures, introduce a Kconfig symbol
> SYS_ARM_CACHE_CP15 that selects cache-cp15.c
>
> Tested-by: Michal Simek <michal.simek@xilinx.com>
> Reviewed-by: Tom Rini <trini@konsulko.com>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180507/25dd8525/attachment.sig>
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [U-Boot,v2,5/7] arm: v7R: Add initial support
2018-04-26 12:51 ` [U-Boot] [PATCH v2 5/7] arm: v7R: Add initial support Lokesh Vutla
@ 2018-05-08 0:46 ` Tom Rini
0 siblings, 0 replies; 18+ messages in thread
From: Tom Rini @ 2018-05-08 0:46 UTC (permalink / raw)
To: u-boot
On Thu, Apr 26, 2018 at 06:21:29PM +0530, Lokesh Vutla wrote:
> From: Michal Simek <michal.simek@xilinx.com>
>
> 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>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180507/adebcc9c/attachment.sig>
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [U-Boot,v2,6/7] arm: v7R: Add support for MPU
2018-04-26 12:51 ` [U-Boot] [PATCH v2 6/7] arm: v7R: Add support for MPU Lokesh Vutla
2018-04-26 19:11 ` Tom Rini
@ 2018-05-08 0:46 ` Tom Rini
1 sibling, 0 replies; 18+ messages in thread
From: Tom Rini @ 2018-05-08 0:46 UTC (permalink / raw)
To: u-boot
On Thu, Apr 26, 2018 at 06:21:30PM +0530, Lokesh Vutla wrote:
> The Memory Protection Unit(MPU) allows to partition memory into regions
> and set individual protection attributes for each region. In absence
> of MPU a default map[1] will take effect. Add support for configuring
> MPU on Cortex-R, by reusing the existing support for Cortex-M processor.
>
> [1] http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0460d/I1002400.html
>
> Tested-by: Michal Simek <michal.simek@xilinx.com>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
> Reviewed-by: Tom Rini <trini@konsulko.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180507/768d19f3/attachment.sig>
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [U-Boot, v2, 7/7] arm: v7R: Add support for enabling caches
2018-04-26 12:51 ` [U-Boot] [PATCH v2 7/7] arm: v7R: Add support for enabling caches Lokesh Vutla
2018-04-26 19:11 ` Tom Rini
@ 2018-05-08 0:46 ` Tom Rini
1 sibling, 0 replies; 18+ messages in thread
From: Tom Rini @ 2018-05-08 0:46 UTC (permalink / raw)
To: u-boot
On Thu, Apr 26, 2018 at 06:21:31PM +0530, Lokesh Vutla wrote:
> Cache maintenance procedure is same for v7A and v7R
> processors. So re-use cache-cp15.c file except for
> mmu parts.
>
> Tested-by: Michal Simek <michal.simek@xilinx.com>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
> Reviewed-by: Tom Rini <trini@konsulko.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180507/5c18136b/attachment.sig>
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2018-05-08 0:46 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-26 12:51 [U-Boot] [PATCH v2 0/7] arm: Introduce v7R support Lokesh Vutla
2018-04-26 12:51 ` [U-Boot] [PATCH v2 1/7] arm: v7: Update VBAR only if available Lokesh Vutla
2018-05-08 0:45 ` [U-Boot] [U-Boot, v2, " Tom Rini
2018-04-26 12:51 ` [U-Boot] [PATCH v2 2/7] arm: v7: Kconfig: Rename CPU_V7 as CPU_V7A Lokesh Vutla
2018-05-08 0:45 ` [U-Boot] [U-Boot, v2, " Tom Rini
2018-04-26 12:51 ` [U-Boot] [PATCH v2 3/7] arm: v7: Kconfig: Add entry for MMU Lokesh Vutla
2018-05-08 0:45 ` [U-Boot] [U-Boot,v2,3/7] " Tom Rini
2018-04-26 12:51 ` [U-Boot] [PATCH v2 4/7] arm: v7: Kconfig: Introduce SYS_ARM_CACHE_CP15 Lokesh Vutla
2018-05-08 0:45 ` [U-Boot] [U-Boot, v2, " Tom Rini
2018-04-26 12:51 ` [U-Boot] [PATCH v2 5/7] arm: v7R: Add initial support Lokesh Vutla
2018-05-08 0:46 ` [U-Boot] [U-Boot,v2,5/7] " Tom Rini
2018-04-26 12:51 ` [U-Boot] [PATCH v2 6/7] arm: v7R: Add support for MPU Lokesh Vutla
2018-04-26 19:11 ` Tom Rini
2018-05-08 0:46 ` [U-Boot] [U-Boot,v2,6/7] " Tom Rini
2018-04-26 12:51 ` [U-Boot] [PATCH v2 7/7] arm: v7R: Add support for enabling caches Lokesh Vutla
2018-04-26 19:11 ` Tom Rini
2018-05-08 0:46 ` [U-Boot] [U-Boot, v2, " Tom Rini
2018-04-26 15:15 ` [U-Boot] [PATCH v2 0/7] arm: Introduce v7R support Alexander Graf
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.