diff --git a/.armv8m.cppcheck.cfg b/.armv8m.cppcheck.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..66bd6a6b91021a500f4d40999b4662d1188bbb37
--- /dev/null
+++ b/.armv8m.cppcheck.cfg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4f30068f0e6e99805db44585d3c7104083e3326b..fcded28d1122878354f3151ca74a217941d68aac 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -181,8 +181,12 @@ if(NOT DISABLE_CPPCHECK)
list(APPEND CMAKE_C_CPPCHECK "--enable=all")
list(APPEND CMAKE_C_CPPCHECK "--error-exitcode=1")
- if(SCP_ARCHITECTURE STREQUAL "armv7-m")
- list(APPEND CMAKE_C_CPPCHECK "--library=${CMAKE_CURRENT_SOURCE_DIR}/.armv7m.cppcheck.cfg")
+ if(SCP_ARCHITECTURE STREQUAL "arm-m")
+ if(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m(33|55)")
+ list(APPEND CMAKE_C_CPPCHECK "--library=${CMAKE_CURRENT_SOURCE_DIR}/.armv8m.cppcheck.cfg")
+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m(3|7)")
+ list(APPEND CMAKE_C_CPPCHECK "--library=${CMAKE_CURRENT_SOURCE_DIR}/.armv7m.cppcheck.cfg")
+ endif()
endif()
if(CMAKE_C_COMPILER_ID STREQUAL "ARMClang")
diff --git a/arch/CMakeLists.txt b/arch/CMakeLists.txt
index 88450ac2f8247100c5fe008298240c888dc2a8e9..13a846dfcb4611c9a0214b7fcdb19279d51ee0e2 100644
--- a/arch/CMakeLists.txt
+++ b/arch/CMakeLists.txt
@@ -1,11 +1,11 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
-list(APPEND SCP_ARCHITECTURE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/arm/armv7-m")
+list(APPEND SCP_ARCHITECTURE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/arm/arm-m")
list(APPEND SCP_ARCHITECTURE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/arm/armv8-a")
list(APPEND SCP_ARCHITECTURE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/none/host")
diff --git a/arch/arm/arm-m/Architecture.cmake b/arch/arm/arm-m/Architecture.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..114b90749c9359c6f69274310fea25f7c050ea59
--- /dev/null
+++ b/arch/arm/arm-m/Architecture.cmake
@@ -0,0 +1,9 @@
+#
+# Arm SCP/MCP Software
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set(SCP_ARCHITECTURE "arm-m")
+set(SCP_ARCHITECTURE_TARGET "arch-arm-m")
diff --git a/arch/arm/armv7-m/CMakeLists.txt b/arch/arm/arm-m/CMakeLists.txt
similarity index 72%
rename from arch/arm/armv7-m/CMakeLists.txt
rename to arch/arm/arm-m/CMakeLists.txt
index d5be87b5e9319ec4d6ba1223d39bd7d8283ff549..b72127fb29b9984f857e253dc023d2d3be470965 100644
--- a/arch/arm/armv7-m/CMakeLists.txt
+++ b/arch/arm/arm-m/CMakeLists.txt
@@ -5,22 +5,33 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-add_library(arch-armv7m)
+add_library(arch-arm-m)
-target_include_directories(arch-armv7m
+#
+# Determine which architecture shall be supported according to
+# the used CPU
+#
+
+if(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m(33|55)")
+ target_compile_definitions(arch-arm-m PUBLIC "ARMV8M")
+else()
+ target_compile_definitions(arch-arm-m PUBLIC "ARMV7M")
+endif()
+
+target_include_directories(arch-arm-m
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
# cmake-lint: disable=E1122
target_sources(
- arch-armv7m
+ arch-arm-m
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/arch_exceptions.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/arch_handlers.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/arch_main.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/arch_nvic.c"
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../src/arch_mm.c")
-target_link_libraries(arch-armv7m PUBLIC cmsis::core-m)
+target_link_libraries(arch-arm-m PUBLIC cmsis::core-m)
#
@@ -36,15 +47,15 @@ cmake_dependent_option(
if(SCP_ENABLE_NEWLIB_NANO)
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
- target_link_options(arch-armv7m PUBLIC "--specs=nano.specs")
+ target_link_options(arch-arm-m PUBLIC "--specs=nano.specs")
elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang")
- target_link_libraries(arch-armv7m PUBLIC c_nano)
+ target_link_libraries(arch-arm-m PUBLIC c_nano)
endif()
else()
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
- target_link_options(arch-armv7m PUBLIC "--specs=nosys.specs")
+ target_link_options(arch-arm-m PUBLIC "--specs=nosys.specs")
elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang")
- target_link_libraries(arch-armv7m PUBLIC c)
+ target_link_libraries(arch-arm-m PUBLIC c)
endif()
endif()
@@ -53,15 +64,15 @@ endif()
# functions that the standard library relies on.
#
-target_link_options(arch-armv7m PUBLIC "LINKER:--undefined=arch_exceptions")
+target_link_options(arch-arm-m PUBLIC "LINKER:--undefined=arch_exceptions")
if(CMAKE_C_COMPILER_ID STREQUAL "ARMClang")
- target_link_options(arch-armv7m
+ target_link_options(arch-arm-m
PUBLIC "LINKER:--entry=arch_exception_reset")
endif()
if(SCP_HAVE_NEWLIB)
- target_link_options(arch-armv7m PUBLIC "LINKER:--undefined=posix_memalign"
+ target_link_options(arch-arm-m PUBLIC "LINKER:--undefined=posix_memalign"
"LINKER:--undefined=_sbrk")
endif()
@@ -89,4 +100,4 @@ else()
set(scp_lds "${CMAKE_CURRENT_SOURCE_DIR}/src/arch.ld.S")
endif()
-scp_target_linker_script(arch-armv7m "${scp_lds}")
+scp_target_linker_script(arch-arm-m "${scp_lds}")
diff --git a/arch/arm/armv7-m/include/arch_exceptions.h b/arch/arm/arm-m/include/arch_exceptions.h
similarity index 90%
rename from arch/arm/armv7-m/include/arch_exceptions.h
rename to arch/arm/arm-m/include/arch_exceptions.h
index e643fe0d1444233b0be8ec6bc58d97da93047441..fe1244ee20d60ef4c4efd718db23c74ac820459b 100644
--- a/arch/arm/armv7-m/include/arch_exceptions.h
+++ b/arch/arm/arm-m/include/arch_exceptions.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2019-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
diff --git a/arch/arm/armv7-m/include/arch_helpers.h b/arch/arm/arm-m/include/arch_helpers.h
similarity index 100%
rename from arch/arm/armv7-m/include/arch_helpers.h
rename to arch/arm/arm-m/include/arch_helpers.h
diff --git a/arch/arm/armv7-m/include/arch_nvic.h b/arch/arm/arm-m/include/arch_nvic.h
similarity index 89%
rename from arch/arm/armv7-m/include/arch_nvic.h
rename to arch/arm/arm-m/include/arch_nvic.h
index 6bc6b5d7f23d55e8b1649db73fa9744f625b968c..cfc4bbaa246d0fbf04df758c2ea33b8ce326d288 100644
--- a/arch/arm/armv7-m/include/arch_nvic.h
+++ b/arch/arm/arm-m/include/arch_nvic.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
diff --git a/arch/arm/armv7-m/include/arch_scatter.h b/arch/arm/arm-m/include/arch_scatter.h
similarity index 90%
rename from arch/arm/armv7-m/include/arch_scatter.h
rename to arch/arm/arm-m/include/arch_scatter.h
index bcdfd7e0ae443796544b18472b843559eaba83b1..0844f696897b400943e3dd4c4759d7fb194670fd 100644
--- a/arch/arm/armv7-m/include/arch_scatter.h
+++ b/arch/arm/arm-m/include/arch_scatter.h
@@ -1,13 +1,13 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2015-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2015-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
* Description:
* Common linker script configuration options.
*
- * There are three supported memory layouts for the ARMv7-M architecture:
+ * There are three supported memory layouts for the ARM-M architectures:
*
* Layout 1 - Single region:
* This layout uses a single read/write/execute memory region for all data.
@@ -34,8 +34,8 @@
#ifndef ARCH_SCATTER_H
#define ARCH_SCATTER_H
-#define ARCH_MEM_MODE_SINGLE_REGION 0
-#define ARCH_MEM_MODE_DUAL_REGION_RELOCATION 1
+#define ARCH_MEM_MODE_SINGLE_REGION 0
+#define ARCH_MEM_MODE_DUAL_REGION_RELOCATION 1
#define ARCH_MEM_MODE_DUAL_REGION_NO_RELOCATION 2
#include
diff --git a/arch/arm/armv7-m/src/arch.ld.S b/arch/arm/arm-m/src/arch.ld.S
similarity index 98%
rename from arch/arm/armv7-m/src/arch.ld.S
rename to arch/arm/arm-m/src/arch.ld.S
index 5a349ac3b49776c9f38f52e17bab2d14d507f0d2..3b15e36e2488366f8af2d259cbadb13c6faf2527 100644
--- a/arch/arm/armv7-m/src/arch.ld.S
+++ b/arch/arm/arm-m/src/arch.ld.S
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2015-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2015-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
diff --git a/arch/arm/armv7-m/src/arch.scatter.S b/arch/arm/arm-m/src/arch.scatter.S
similarity index 96%
rename from arch/arm/armv7-m/src/arch.scatter.S
rename to arch/arm/arm-m/src/arch.scatter.S
index c89254df8759ace1f20ae9b1d3b1f21bafcc4525..c87efe3f85ee774d4d37266fb1661935b1babf7e 100644
--- a/arch/arm/armv7-m/src/arch.scatter.S
+++ b/arch/arm/arm-m/src/arch.scatter.S
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
diff --git a/arch/arm/armv7-m/src/arch_exceptions.c b/arch/arm/arm-m/src/arch_exceptions.c
similarity index 90%
rename from arch/arm/armv7-m/src/arch_exceptions.c
rename to arch/arm/arm-m/src/arch_exceptions.c
index d990c6a5db02a8e2e2f9947da4fd4aa2c1158e43..e1472f33081a34abc45a50bd8ab06bd1966b7600 100644
--- a/arch/arm/armv7-m/src/arch_exceptions.c
+++ b/arch/arm/arm-m/src/arch_exceptions.c
@@ -5,12 +5,12 @@
* SPDX-License-Identifier: BSD-3-Clause
*
* Description:
- * ARMv7-M exception handlers.
+ * ARM-M exception handlers.
*/
-#include
+#include "arch_exceptions.h"
-#include
+#include
#include
@@ -49,7 +49,7 @@ extern char __stackheap_end__;
#endif
/*
- * Set up the exception table. The structure below is is added to the
+ * Set up the exception table. The structure below is added to the
* .exceptions section which will be explicitly placed at the beginning of the
* binary by the linker script.
*/
@@ -72,6 +72,10 @@ const struct {
(uintptr_t)(arch_exception_invalid),
[NVIC_USER_IRQ_OFFSET + UsageFault_IRQn - 1] =
(uintptr_t)(arch_exception_invalid),
+#ifdef ARMV8M
+ [NVIC_USER_IRQ_OFFSET + SecureFault_IRQn - 1] =
+ (uintptr_t)(arch_exception_invalid),
+#endif
[NVIC_USER_IRQ_OFFSET + DebugMonitor_IRQn - 1] =
(uintptr_t)(arch_exception_invalid),
diff --git a/arch/arm/armv7-m/src/arch_handlers.c b/arch/arm/arm-m/src/arch_handlers.c
similarity index 91%
rename from arch/arm/armv7-m/src/arch_handlers.c
rename to arch/arm/arm-m/src/arch_handlers.c
index 39795498970f948cb0078aa115ed44e038454872..555358fe338248b53329c7b85267720cec4abe76 100644
--- a/arch/arm/armv7-m/src/arch_handlers.c
+++ b/arch/arm/arm-m/src/arch_handlers.c
@@ -1,11 +1,11 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2015-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2015-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
* Description:
- * ARMv7-M exception handlers.
+ * ARM-M exception handlers.
*/
#include
diff --git a/arch/arm/armv7-m/src/arch_main.c b/arch/arm/arm-m/src/arch_main.c
similarity index 84%
rename from arch/arm/armv7-m/src/arch_main.c
rename to arch/arm/arm-m/src/arch_main.c
index 128d7b2d6a5b2957848634efe1b4c5fa848308a3..f77c20cd2facaae54efeee792369a1a9e5b1a221 100644
--- a/arch/arm/armv7-m/src/arch_main.c
+++ b/arch/arm/arm-m/src/arch_main.c
@@ -45,18 +45,21 @@ static void arch_init_ccr(void)
* Set up the Configuration Control Register (CCR) in the System Control
* Block (1) by setting the following flag bits:
*
- * DIV_0_TRP [4]: Enable trapping on division by zero.
+ * DIV_0_TRP [4]: Enable trapping on division by zero. (1)(2)
* STKALIGN [9]: Enable automatic DWORD stack-alignment on exception
- * entry (2).
+ * entry (3).
*
* All other bits are left in their default state.
*
* (1) ARM® v7-M Architecture Reference Manual, section B3.2.8.
- * (2) ARM® v7-M Architecture Reference Manual, section B1.5.7.
+ * (2) Arm® v8-M Architecture Reference Manual, section D1.2.9.
+ * (3) ARM® v7-M Architecture Reference Manual, section B1.5.7.
*/
SCB->CCR |= SCB_CCR_DIV_0_TRP_Msk;
+#ifdef ARMV7M
SCB->CCR |= SCB_CCR_STKALIGN_Msk;
+#endif
}
int main(void)
diff --git a/arch/arm/armv7-m/src/arch_nvic.c b/arch/arm/arm-m/src/arch_nvic.c
similarity index 100%
rename from arch/arm/armv7-m/src/arch_nvic.c
rename to arch/arm/arm-m/src/arch_nvic.c
diff --git a/arch/arm/armv7-m/Architecture.cmake b/arch/arm/armv7-m/Architecture.cmake
deleted file mode 100644
index e39a6fb3661a828546be46075db299af6f0e1abd..0000000000000000000000000000000000000000
--- a/arch/arm/armv7-m/Architecture.cmake
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-3-Clause
-#
-
-set(SCP_ARCHITECTURE "armv7-m")
-set(SCP_ARCHITECTURE_TARGET "arch-armv7m")
diff --git a/arch/arm/armv7-m/arch.mk b/arch/arm/armv7-m/arch.mk
deleted file mode 100644
index 610464a98dd3aa98b7d5f12dac89737f2568d61e..0000000000000000000000000000000000000000
--- a/arch/arm/armv7-m/arch.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Arm SCP/MCP Software
-# Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-3-Clause
-#
-
-BS_LIB_SOURCES_$(BS_ARCH_ARCH) += arch_exceptions.c
-BS_LIB_SOURCES_$(BS_ARCH_ARCH) += arch_handlers.c
-BS_LIB_SOURCES_$(BS_ARCH_ARCH) += arch_main.c
-BS_LIB_SOURCES_$(BS_ARCH_ARCH) += arch_nvic.c
-
-BS_LIB_SOURCES_$(BS_ARCH_ARCH) := $(addprefix $(ARCH_DIR)/$(BS_ARCH_VENDOR)/$(BS_ARCH_ARCH)/src/,$(BS_LIB_SOURCES_$(BS_ARCH_ARCH)))
diff --git a/cmake/Toolchain/Clang-Baremetal.cmake b/cmake/Toolchain/Clang-Baremetal.cmake
index 1ab74e46a19ad5aabec2a29ad6ba624862988cf5..66b9cf0f45e639cc7b32d07bed927ac90c0256a9 100644
--- a/cmake/Toolchain/Clang-Baremetal.cmake
+++ b/cmake/Toolchain/Clang-Baremetal.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -41,13 +41,17 @@ foreach(language IN ITEMS ASM C CXX)
"-I\"${LLVM_SYSROOT_PATH}/include\" ")
endif()
- if(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m[37]")
+ if(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m(3|7|33|55)")
set(BUILD_TARGET "-mcpu=${CMAKE_SYSTEM_PROCESSOR} -mthumb ")
string(APPEND CMAKE_${language}_FLAGS_INIT "${BUILD_TARGET}")
if(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m7")
set(CLANG_BUILTINS_ARCH "armv7em")
- else()
+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m33")
+ set(CLANG_BUILTINS_ARCH "armv8m.main")
+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m3")
set(CLANG_BUILTINS_ARCH "armv7m")
+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m55")
+ set(CLANG_BUILTINS_ARCH "armv8.1m.main")
endif()
endif()
diff --git a/cmake/Toolchain/GNU-Baremetal.cmake b/cmake/Toolchain/GNU-Baremetal.cmake
index 457782c1f249fa400f4050375f48818ca2e6a021..3fff1cff8a0d11927629f6be842282748e350057 100644
--- a/cmake/Toolchain/GNU-Baremetal.cmake
+++ b/cmake/Toolchain/GNU-Baremetal.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -19,7 +19,7 @@ foreach(language IN ITEMS ASM C CXX)
"-mstrict-align -fno-builtin -DAARCH64 -D__ASSEMBLY__ ")
endif()
- if(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m[37]")
+ if(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m(3|7|33|55)")
string(APPEND CMAKE_${language}_FLAGS_INIT "-mthumb ")
string(APPEND CMAKE_${language}_FLAGS_INIT
"-mcpu=${CMAKE_SYSTEM_PROCESSOR} ")
diff --git a/contrib/cmsis/git b/contrib/cmsis/git
index 80cc44bba16cb4c8f495b7aa9709d41ac50e9529..13b9f72f212688d2306d0d085d87cbb4bf9e5d3f 160000
--- a/contrib/cmsis/git
+++ b/contrib/cmsis/git
@@ -1 +1 @@
-Subproject commit 80cc44bba16cb4c8f495b7aa9709d41ac50e9529
+Subproject commit 13b9f72f212688d2306d0d085d87cbb4bf9e5d3f
diff --git a/module/CMakeLists.txt b/module/CMakeLists.txt
index 916ac7134bcd964c02b65dab1a3428eb0be52378..1112f6e80fb757099976571701a7d87779d9ea31 100644
--- a/module/CMakeLists.txt
+++ b/module/CMakeLists.txt
@@ -18,6 +18,7 @@
list(APPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/apcontext")
list(APPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/armv7m_mpu")
+list(APPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/armv8m_mpu")
list(APPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/bootloader")
list(APPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/clock")
list(APPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/cmn600")
diff --git a/module/armv8m_mpu/CMakeLists.txt b/module/armv8m_mpu/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7e90682ab0589bfd28ede63306e277fd552fc508
--- /dev/null
+++ b/module/armv8m_mpu/CMakeLists.txt
@@ -0,0 +1,14 @@
+#
+# Arm SCP/MCP Software
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+add_library(${SCP_MODULE_TARGET} SCP_MODULE)
+
+target_include_directories(${SCP_MODULE_TARGET}
+ PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
+
+target_sources(${SCP_MODULE_TARGET}
+ PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/mod_armv8m_mpu.c")
diff --git a/module/armv8m_mpu/Module.cmake b/module/armv8m_mpu/Module.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..2c430f0e1328cf48f614a2c7f66e6472bd75182e
--- /dev/null
+++ b/module/armv8m_mpu/Module.cmake
@@ -0,0 +1,9 @@
+#
+# Arm SCP/MCP Software
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set(SCP_MODULE "armv8m-mpu")
+set(SCP_MODULE_TARGET "module-armv8m-mpu")
diff --git a/module/armv8m_mpu/include/mod_armv8m_mpu.h b/module/armv8m_mpu/include/mod_armv8m_mpu.h
new file mode 100644
index 0000000000000000000000000000000000000000..ea19d4602991c56b0769e45213510c7189c861b9
--- /dev/null
+++ b/module/armv8m_mpu/include/mod_armv8m_mpu.h
@@ -0,0 +1,75 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef MOD_ARMV8M_MPU_H
+#define MOD_ARMV8M_MPU_H
+
+#include
+
+#include
+
+/*!
+ * \ingroup GroupModules
+ * \addtogroup GroupMPUARMv8M MPU (ARMv8-M)
+ * \{
+ */
+
+/*!
+ * \brief MPU_MAIR registers indices.
+ */
+enum mod_armv8m_mpu_attr_id {
+ MPU_ATTR_0,
+ MPU_ATTR_1,
+ MPU_ATTR_2,
+ MPU_ATTR_3,
+ MPU_ATTR_4,
+ MPU_ATTR_5,
+ MPU_ATTR_6,
+ MPU_ATTR_7,
+ MPU_MAX_ATTR_COUNT,
+};
+
+/*!
+ * \brief Module configuration.
+ */
+struct mod_armv8m_mpu_config {
+ /*!
+ * \brief Number of MPU attributes.
+ */
+ uint8_t attributes_count;
+
+ /*!
+ * \brief Pointer to array of MPU attributes.
+ */
+ const uint8_t *attributes;
+
+ /*!
+ * \brief First region number.
+ */
+ uint32_t first_region_number;
+
+ /*!
+ * \brief Number of MPU regions.
+ */
+ uint32_t region_count;
+
+ /*!
+ * \brief Pointer to array of MPU regions.
+ *
+ * \details Documentation for the \c ARM_MPU_Region_t can be found in the
+ * CMSIS 5 documentation for the ARMv8-M MPU.
+ *
+ * \see http://arm-software.github.io/CMSIS_5/General/html/index.html
+ */
+ const ARM_MPU_Region_t *regions;
+};
+
+/*!
+ * \}
+ */
+
+#endif /* MOD_ARMV8M_MPU_H */
diff --git a/module/armv8m_mpu/src/mod_armv8m_mpu.c b/module/armv8m_mpu/src/mod_armv8m_mpu.c
new file mode 100644
index 0000000000000000000000000000000000000000..58dbe822111e12c383a869134cb4d8c900079c63
--- /dev/null
+++ b/module/armv8m_mpu/src/mod_armv8m_mpu.c
@@ -0,0 +1,54 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include "mod_armv8m_mpu.h"
+
+#include
+#include
+#include
+#include
+
+#include
+
+static int armv8m_mpu_init(
+ fwk_id_t module_id,
+ unsigned int element_count,
+ const void *data)
+{
+ const struct mod_armv8m_mpu_config *config;
+ uint8_t attr_index;
+ int status;
+
+ fwk_assert(element_count == 0);
+ fwk_assert(data != NULL);
+
+ config = data;
+
+ if (config->attributes_count <= (uint8_t)MPU_MAX_ATTR_COUNT) {
+ ARM_MPU_Disable();
+
+ for (attr_index = 0U; attr_index < config->attributes_count;
+ attr_index++) {
+ ARM_MPU_SetMemAttr(attr_index, config->attributes[attr_index]);
+ }
+ ARM_MPU_Load(
+ config->first_region_number, config->regions, config->region_count);
+ ARM_MPU_Enable(MPU_CTRL_HFNMIENA_Msk);
+
+ status = FWK_SUCCESS;
+ } else {
+ status = FWK_E_RANGE;
+ }
+
+ return status;
+}
+
+/* Module description */
+const struct fwk_module module_armv8m_mpu = {
+ .type = FWK_MODULE_TYPE_DRIVER,
+ .init = armv8m_mpu_init,
+};
diff --git a/product/juno/include/fmw_cmsis.h b/product/juno/include/fmw_cmsis.h
index 94f831858122dc4dbe25b1af870bf50bdbf7ef71..2f85d6b213f8dfd346dd7757b75fcd7d460ab602 100644
--- a/product/juno/include/fmw_cmsis.h
+++ b/product/juno/include/fmw_cmsis.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -11,10 +11,11 @@
#include
#define __CHECK_DEVICE_DEFINES
-#define __CM3_REV 0x0201
-#define __MPU_PRESENT 1
-#define __NVIC_PRIO_BITS 3
-#define __Vendor_SysTickConfig 0
+#define __CM3_REV 0x0201U
+#define __MPU_PRESENT 1U
+#define __NVIC_PRIO_BITS 3U
+#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock)*/
diff --git a/product/juno/scp_ramfw/Firmware.cmake b/product/juno/scp_ramfw/Firmware.cmake
index 06d99869469804eb0eea959d67ea6ff2cca28118..12836fec58cee2dbd6f5821b55eee0705ab391d2 100644
--- a/product/juno/scp_ramfw/Firmware.cmake
+++ b/product/juno/scp_ramfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -14,7 +14,7 @@ set(SCP_FIRMWARE_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}")
set(SCP_GENERATE_FLAT_BINARY_INIT TRUE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
diff --git a/product/juno/scp_romfw/Firmware.cmake b/product/juno/scp_romfw/Firmware.cmake
index df01f2863e88dff5e495557e68ad472a29ede68b..b157cb33968d863226b629523ce1b3cfc808b037 100644
--- a/product/juno/scp_romfw/Firmware.cmake
+++ b/product/juno/scp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -13,7 +13,7 @@ set(SCP_TOOLCHAIN_INIT "GNU")
set(SCP_FIRMWARE_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}")
set(SCP_GENERATE_FLAT_BINARY TRUE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_NOTIFICATIONS TRUE)
diff --git a/product/juno/scp_romfw_bypass/Firmware.cmake b/product/juno/scp_romfw_bypass/Firmware.cmake
index 9a150d8a47d74d18b03dd7954096c4d734bb0ece..fd704a37978a99d5be44f39b4ffc1caa9313f647 100644
--- a/product/juno/scp_romfw_bypass/Firmware.cmake
+++ b/product/juno/scp_romfw_bypass/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -15,7 +15,7 @@ set(SCP_FIRMWARE_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}")
set(SCP_GENERATE_FLAT_BINARY TRUE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_NOTIFICATIONS TRUE)
diff --git a/product/morello/include/fmw_cmsis_mcp.h b/product/morello/include/fmw_cmsis_mcp.h
index 469d5456ce3eeff394367a4a258e2da00bcf6e61..18f775a192b080e98efe53d95c5d73324910fd6d 100644
--- a/product/morello/include/fmw_cmsis_mcp.h
+++ b/product/morello/include/fmw_cmsis_mcp.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -19,6 +19,7 @@
#define __DTCM_PRESENT 0U
#define __NVIC_PRIO_BITS 3U
#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
#define MCP_WDOG_IRQ FWK_INTERRUPT_NMI /* MCP Watchdog (SP805) */
diff --git a/product/morello/include/fmw_cmsis_scp.h b/product/morello/include/fmw_cmsis_scp.h
index abd1cd8a0d24cd3cff134b285b4aac7c55988f25..61dd3eb4e03215345a63e3e7ac5d427c06c566da 100644
--- a/product/morello/include/fmw_cmsis_scp.h
+++ b/product/morello/include/fmw_cmsis_scp.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -19,6 +19,7 @@
#define __DTCM_PRESENT 0U
#define __NVIC_PRIO_BITS 3U
#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
#define SCP_WDOG_IRQ FWK_INTERRUPT_NMI /* SCP Watchdog (SP805) */
diff --git a/product/morello/mcp_ramfw_fvp/Firmware.cmake b/product/morello/mcp_ramfw_fvp/Firmware.cmake
index d97e51e01352ee5303ba872bc5a428654c9e65e0..1999bf30947656f130d3c1211330516df3984a7c 100644
--- a/product/morello/mcp_ramfw_fvp/Firmware.cmake
+++ b/product/morello/mcp_ramfw_fvp/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -14,7 +14,7 @@ set(SCP_FIRMWARE_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}")
set(SCP_GENERATE_FLAT_BINARY_INIT TRUE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
diff --git a/product/morello/mcp_ramfw_soc/Firmware.cmake b/product/morello/mcp_ramfw_soc/Firmware.cmake
index af0d0f1b9c23276ea8593fe352b901e1bf021416..976dce2e04c06278db4b19d1f34e085a31601135 100644
--- a/product/morello/mcp_ramfw_soc/Firmware.cmake
+++ b/product/morello/mcp_ramfw_soc/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -14,7 +14,7 @@ set(SCP_FIRMWARE_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}")
set(SCP_GENERATE_FLAT_BINARY_INIT TRUE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
diff --git a/product/morello/mcp_romfw/Firmware.cmake b/product/morello/mcp_romfw/Firmware.cmake
index d563b099cbe7ab90406ab6d074e3f249eb55656f..1baf4823300c10562b3548deb33c3b81e95165e8 100644
--- a/product/morello/mcp_romfw/Firmware.cmake
+++ b/product/morello/mcp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
list(PREPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_LIST_DIR}/../module/morello_rom")
list(PREPEND SCP_MODULE_PATHS "${CMAKE_SOURCE_DIR}/module/fip")
diff --git a/product/morello/scp_ramfw_fvp/Firmware.cmake b/product/morello/scp_ramfw_fvp/Firmware.cmake
index 0774229e908a1790a54c07ed38986c2b34801e5f..9ec40f5f402d0db98239f705736d550e7fb3e0cf 100644
--- a/product/morello/scp_ramfw_fvp/Firmware.cmake
+++ b/product/morello/scp_ramfw_fvp/Firmware.cmake
@@ -19,7 +19,7 @@ set(SCP_GENERATE_FLAT_BINARY_INIT TRUE)
set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
diff --git a/product/morello/scp_ramfw_soc/Firmware.cmake b/product/morello/scp_ramfw_soc/Firmware.cmake
index 663648f7ffe41f5156df1a96e674d7e927b8ecfd..fc81c6b03eb0c54bace360539f77fb47c1994718 100644
--- a/product/morello/scp_ramfw_soc/Firmware.cmake
+++ b/product/morello/scp_ramfw_soc/Firmware.cmake
@@ -19,7 +19,7 @@ set(SCP_GENERATE_FLAT_BINARY_INIT TRUE)
set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
diff --git a/product/morello/scp_romfw/Firmware.cmake b/product/morello/scp_romfw/Firmware.cmake
index edd30b80f1478f53dcd1bfd4f5f6bbd8062ad785..dc57d5f14d675f20a33408582aa2fd26f221e328 100644
--- a/product/morello/scp_romfw/Firmware.cmake
+++ b/product/morello/scp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
list(PREPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_LIST_DIR}/../module/morello_rom")
list(PREPEND SCP_MODULE_PATHS "${CMAKE_SOURCE_DIR}/module/fip")
diff --git a/product/n1sdp/include/fmw_cmsis_mcp.h b/product/n1sdp/include/fmw_cmsis_mcp.h
index acceb6b0180cc902add880f257b114bbf26ee35a..6b32a332aa8b51cd1c5440b44213bf09c5aef4a0 100644
--- a/product/n1sdp/include/fmw_cmsis_mcp.h
+++ b/product/n1sdp/include/fmw_cmsis_mcp.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -19,6 +19,7 @@
#define __DTCM_PRESENT 0U
#define __NVIC_PRIO_BITS 3U
#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock)*/
typedef enum IRQn {
diff --git a/product/n1sdp/include/fmw_cmsis_scp.h b/product/n1sdp/include/fmw_cmsis_scp.h
index 31185689bda0c1a93f7531ca449bcc4b78eff2c7..72c79530b891d2173fa21a05adbb56f687dc6885 100644
--- a/product/n1sdp/include/fmw_cmsis_scp.h
+++ b/product/n1sdp/include/fmw_cmsis_scp.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -19,6 +19,7 @@
#define __DTCM_PRESENT 0U
#define __NVIC_PRIO_BITS 3U
#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock)*/
diff --git a/product/n1sdp/mcp_ramfw/Firmware.cmake b/product/n1sdp/mcp_ramfw/Firmware.cmake
index 491e9dd5798f1f4783dd68915f7b5626ecfbd38b..1bbedb035fb16051e2d7fa4e9905a196658a9560 100644
--- a/product/n1sdp/mcp_ramfw/Firmware.cmake
+++ b/product/n1sdp/mcp_ramfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_FIRMWARE_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}")
diff --git a/product/n1sdp/mcp_romfw/Firmware.cmake b/product/n1sdp/mcp_romfw/Firmware.cmake
index e4b304b8bb9c37ee357a97c0ef199f1c07bf8b0c..c12c16ccd289478d3978f6295b4db2490ad7899f 100644
--- a/product/n1sdp/mcp_romfw/Firmware.cmake
+++ b/product/n1sdp/mcp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -19,7 +19,7 @@ set(SCP_FIRMWARE_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}")
set(SCP_GENERATE_FLAT_BINARY_INIT TRUE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
diff --git a/product/n1sdp/scp_ramfw/Firmware.cmake b/product/n1sdp/scp_ramfw/Firmware.cmake
index f97151f0a9142fca94c75751ab927306c34f9399..422ae6714a10f42c48010be2ac18cadedd7666a5 100644
--- a/product/n1sdp/scp_ramfw/Firmware.cmake
+++ b/product/n1sdp/scp_ramfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
list(PREPEND SCP_MODULE_PATHS "${CMAKE_SOURCE_DIR}/module/fip")
diff --git a/product/n1sdp/scp_romfw/Firmware.cmake b/product/n1sdp/scp_romfw/Firmware.cmake
index 3c79a9ffd5e4561eff60ad1ca8d61d937d7456b2..1c48a22d9720b8763e00076a373459948f3532a7 100644
--- a/product/n1sdp/scp_romfw/Firmware.cmake
+++ b/product/n1sdp/scp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
list(PREPEND SCP_MODULE_PATHS "${CMAKE_SOURCE_DIR}/module/fip")
list(PREPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_LIST_DIR}/../module/n1sdp_rom")
diff --git a/product/rdfremont/include/fmw_arch.h b/product/rdfremont/include/fmw_arch.h
new file mode 100644
index 0000000000000000000000000000000000000000..cbd92b9e0a441776e04b778ec50f59ea4798fd0d
--- /dev/null
+++ b/product/rdfremont/include/fmw_arch.h
@@ -0,0 +1,17 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef FMW_ARCH_H
+#define FMW_ARCH_H
+/*
+ * Suspend feature is disabled until the whole system
+ * ( LCP,MCP and SCPs ) become available to wakeup
+ * the LCP.
+ */
+#define FMW_DISABLE_ARCH_SUSPEND 1
+
+#endif /* FMW_ARCH_H */
diff --git a/product/rdfremont/include/fmw_cmsis_lcp.h b/product/rdfremont/include/fmw_cmsis_lcp.h
new file mode 100644
index 0000000000000000000000000000000000000000..bced17f75356775a6ddd6307b43de985c1eb9f72
--- /dev/null
+++ b/product/rdfremont/include/fmw_cmsis_lcp.h
@@ -0,0 +1,56 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef FMW_CMSIS_LCP_H
+#define FMW_CMSIS_LCP_H
+
+#include
+
+#define __CHECK_DEVICE_DEFINES
+#define __CM55_REV 0x0000U
+#define __FPU_PRESENT 0U
+#define __MPU_PRESENT 1U
+#define __VTOR_PRESENT 1U
+#define __PMU_PRESENT 0U
+#define __DSP_PRESENT 0U
+#define __ICACHE_PRESENT 0U
+#define __DCACHE_PRESENT 0U
+#define __DTCM_PRESENT 0U
+#define __NVIC_PRIO_BITS 3U
+#define __SAUREGION_PRESENT 0U
+#define __Vendor_SysTickConfig 0U
+
+typedef enum IRQn {
+ Reset_IRQn = -15,
+ NonMaskableInt_IRQn = -14,
+ HardFault_IRQn = -13,
+ MemoryManagement_IRQn = -12,
+ BusFault_IRQn = -11,
+ UsageFault_IRQn = -10,
+ SecureFault_IRQn = -9,
+ SVCall_IRQn = -5,
+ DebugMonitor_IRQn = -4,
+ PendSV_IRQn = -2,
+ SysTick_IRQn = -1,
+
+ WDG_RST_RQST_IRQ = 0, /* Watchdog reset request */
+ WDG_INT_IRQ = 1, /* Watchdog interrupt */
+ RESERVED2_IRQ = 2, /* Reserved */
+ TIMER_IRQ = 3, /* Timer */
+ RESERVED4_IRQ = 4, /* Reserved */
+ RESERVED5_IRQ = 5, /* Reserved */
+ RESERVED6_IRQ = 6, /* Reserved */
+ RESERVED7_IRQ = 7, /* Reserved */
+ RESERVED8_IRQ = 8, /* Reserved */
+ RESERVED9_IRQ = 9, /* Reserved */
+
+ IRQn_MAX = INT16_MAX,
+} IRQn_Type;
+
+#include
+
+#endif /* FMW_CMSIS_LCP_H */
diff --git a/product/rdfremont/include/fmw_io.h b/product/rdfremont/include/fmw_io.h
new file mode 100644
index 0000000000000000000000000000000000000000..57286d4ee90264174fe84bb88285be8b793c487f
--- /dev/null
+++ b/product/rdfremont/include/fmw_io.h
@@ -0,0 +1,17 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef FMW_IO_H
+#define FMW_IO_H
+
+#include
+#include
+
+#define FMW_IO_STDIN_ID FWK_ID_ELEMENT(FWK_MODULE_IDX_PL011, 0)
+#define FMW_IO_STDOUT_ID FWK_ID_ELEMENT(FWK_MODULE_IDX_PL011, 0)
+
+#endif /* FMW_IO_H */
diff --git a/product/rdfremont/include/lcp_device.h b/product/rdfremont/include/lcp_device.h
new file mode 100644
index 0000000000000000000000000000000000000000..5b2331c0ed6036cea3194cd8c5fdad415447c831
--- /dev/null
+++ b/product/rdfremont/include/lcp_device.h
@@ -0,0 +1,36 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef LCP_DEVICE_H
+#define LCP_DEVICE_H
+
+#include
+
+#include
+
+#include
+
+#define CTRL_ENABLE_POS 0U
+#define CTRL_EXTR_EN_POS 1U
+#define CTRL_EXTR_IS_CLK_POS 2U
+#define CTRL_INT_EN_POS 3U
+
+#define CTRL_ENABLE_MASK (1UL << CTRL_ENABLE_POS)
+#define CTRL_EXTR_EN_POS_MASK (1UL << CTRL_EXTR_EN_POS)
+#define CTRL_EXTR_IS_CLK_MASK (1UL << CTRL_EXTR_IS_CLK_POS)
+#define CTRL_INT_EN_MASK (1UL << CTRL_INT_EN_POS)
+
+struct lcp_timer_reg_str {
+ FWK_RW uint32_t CTRL;
+ FWK_RW uint32_t VALUE;
+ FWK_RW uint32_t RELOAD;
+ FWK_RW uint32_t INTSTATUS;
+};
+
+#define LCP_TIMER_REG_S ((struct lcp_timer_reg_str *)LCP_TIMER_BASE_S)
+
+#endif /* LCP_DEVICE_H */
diff --git a/product/rdfremont/include/lcp_mmap.h b/product/rdfremont/include/lcp_mmap.h
new file mode 100644
index 0000000000000000000000000000000000000000..81524345146ed72d95c7387b2295a35aa502087c
--- /dev/null
+++ b/product/rdfremont/include/lcp_mmap.h
@@ -0,0 +1,44 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Description:
+ * Software defined memory map for LCP core.
+ */
+
+#ifndef LCP_SOFTWARE_MMAP_H
+#define LCP_SOFTWARE_MMAP_H
+
+#include
+
+#define LCP_ITCM_SIZE (64 * 1024)
+#define LCP_DTCM_SIZE (64 * 1024)
+
+#define LCP_ITCM_NS_BASE 0x00000000
+#define LCP_ITCM_S_BASE 0x10000000
+#define LCP_DTCM_NS_BASE 0x20000000
+#define LCP_DTCM_S_BASE 0x30000000
+
+#define LCP_CORE_ITCM_REGION_START LCP_ITCM_NS_BASE
+#define LCP_CORE_ITCM_REGION_END (LCP_ITCM_NS_BASE + LCP_ITCM_SIZE - 1)
+
+#define LCP_CORE_DTCM_REGION_START LCP_DTCM_NS_BASE
+#define LCP_CORE_DTCM_REGION_END (LCP_DTCM_NS_BASE + LCP_DTCM_SIZE - 1)
+
+#define LCP_CORE_PERIPHERAL_REGION_START 0x30010000
+#define LCP_CORE_PERIPHERAL_REGION_END 0x6FFFFFFF
+
+#define LCP_SRAM_REGION_START 0x70000000
+#define LCP_SRAM_REGION_END 0xB007FFFF
+
+#define LCP_DEVICE_REGION_START 0xB0080000
+#define LCP_DEVICE_REGION_END 0xFFFFFFFF
+
+#define LCP_TIMER_BASE_NS UINT32_C(0x48000000)
+#define LCP_TIMER_BASE_S UINT32_C(0x58000000)
+
+#define LCP_UART_BASE 0xB2000000
+
+#endif /* LCP_SOFTWARE_MMAP_H */
diff --git a/product/rdfremont/lcp_ramfw/CMakeLists.txt b/product/rdfremont/lcp_ramfw/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4015892df09542178461dba05d51489d8b53cdff
--- /dev/null
+++ b/product/rdfremont/lcp_ramfw/CMakeLists.txt
@@ -0,0 +1,38 @@
+#
+# Arm SCP/MCP Software
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+#
+# Create the firmware target.
+#
+
+add_executable(rdfremont-lcp)
+
+target_include_directories(
+ rdfremont-lcp PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../include"
+ "${CMAKE_CURRENT_SOURCE_DIR}")
+
+# cmake-lint: disable=E1122
+
+target_sources(
+ rdfremont-lcp
+ PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/config_armv8m_mpu.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/config_pl011.c")
+
+#
+# Some of our firmware includes require CMSIS.
+#
+
+target_link_libraries(rdfremont-lcp PUBLIC cmsis::core-m)
+
+#
+# We explicitly add the CMSIS include directories to our interface include
+# directories. Each module target adds these include directories to their own,
+# allowing them to include any firmware includes we expose.
+#
+
+target_include_directories(rdfremont-lcp
+ PUBLIC $)
diff --git a/product/rdfremont/lcp_ramfw/Firmware.cmake b/product/rdfremont/lcp_ramfw/Firmware.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..32cfe9a0ac65becf2f89db9e0084adf53625d8fd
--- /dev/null
+++ b/product/rdfremont/lcp_ramfw/Firmware.cmake
@@ -0,0 +1,37 @@
+#
+# Arm SCP/MCP Software
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+#
+# Configure the build system.
+#
+
+set(SCP_FIRMWARE "rdfremont-lcp")
+
+set(SCP_FIRMWARE_TARGET "rdfremont-lcp")
+
+set(SCP_TOOLCHAIN_INIT "GNU")
+
+set(SCP_GENERATE_FLAT_BINARY_INIT TRUE)
+
+set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
+
+set(SCP_ENABLE_IPO_INIT FALSE)
+
+set(SCP_ARCHITECTURE "arm-m")
+
+set(SCP_ENABLE_DEBUGGER_INIT FALSE)
+
+list(PREPEND SCP_MODULE_PATHS
+ "${CMAKE_CURRENT_LIST_DIR}/../module/mod_lcp_platform")
+
+# The order of the modules in the following list is the order in which the
+# modules are initialized, bound, started during the pre-runtime phase.
+# any change in the order will cause firmware initialization errors.
+
+list(APPEND SCP_MODULES "armv8m-mpu")
+list(APPEND SCP_MODULES "lcp-platform")
+list(APPEND SCP_MODULES "pl011")
diff --git a/product/rdfremont/lcp_ramfw/Toolchain-ArmClang.cmake b/product/rdfremont/lcp_ramfw/Toolchain-ArmClang.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..517a0679df730652396edabda9a76f6b667261cc
--- /dev/null
+++ b/product/rdfremont/lcp_ramfw/Toolchain-ArmClang.cmake
@@ -0,0 +1,20 @@
+#
+# Arm SCP/MCP Software
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+# cmake-lint: disable=C0301
+
+include_guard()
+
+set(CMAKE_SYSTEM_PROCESSOR "cortex-m55+nodsp")
+
+set(CMAKE_ASM_COMPILER_TARGET "arm-arm-none-eabi")
+set(CMAKE_C_COMPILER_TARGET "arm-arm-none-eabi")
+set(CMAKE_CXX_COMPILER_TARGET "arm-arm-none-eabi")
+
+include(
+ "${CMAKE_CURRENT_LIST_DIR}/../../../cmake/Toolchain/ArmClang-Baremetal.cmake"
+)
diff --git a/product/rdfremont/lcp_ramfw/Toolchain-Clang.cmake b/product/rdfremont/lcp_ramfw/Toolchain-Clang.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..87ffe67a392e8fbffd3d6b13f0a1513165f09486
--- /dev/null
+++ b/product/rdfremont/lcp_ramfw/Toolchain-Clang.cmake
@@ -0,0 +1,17 @@
+#
+# Arm SCP/MCP Software
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+include_guard()
+
+set(CMAKE_SYSTEM_PROCESSOR "cortex-m55+nodsp")
+
+set(CMAKE_ASM_COMPILER_TARGET "arm-arm-none-eabi")
+set(CMAKE_C_COMPILER_TARGET "arm-arm-none-eabi")
+set(CMAKE_CXX_COMPILER_TARGET "arm-arm-none-eabi")
+
+include(
+ "${CMAKE_CURRENT_LIST_DIR}/../../../cmake/Toolchain/Clang-Baremetal.cmake")
diff --git a/product/rdfremont/lcp_ramfw/Toolchain-GNU.cmake b/product/rdfremont/lcp_ramfw/Toolchain-GNU.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..2f620ced33a993e11993502c0149904df6cf426e
--- /dev/null
+++ b/product/rdfremont/lcp_ramfw/Toolchain-GNU.cmake
@@ -0,0 +1,18 @@
+#
+# Arm SCP/MCP Software
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+include_guard()
+
+set(CMAKE_SYSTEM_PROCESSOR "cortex-m55+nodsp")
+set(CMAKE_TOOLCHAIN_PREFIX "arm-none-eabi-")
+
+set(CMAKE_ASM_COMPILER_TARGET "arm-none-eabi")
+set(CMAKE_C_COMPILER_TARGET "arm-none-eabi")
+set(CMAKE_CXX_COMPILER_TARGET "arm-none-eabi")
+
+include(
+ "${CMAKE_CURRENT_LIST_DIR}/../../../cmake/Toolchain/GNU-Baremetal.cmake")
diff --git a/product/rdfremont/lcp_ramfw/config_armv8m_mpu.c b/product/rdfremont/lcp_ramfw/config_armv8m_mpu.c
new file mode 100644
index 0000000000000000000000000000000000000000..856ca8e3a38c0fecfb7ebb19a7b64ff60f3bceb8
--- /dev/null
+++ b/product/rdfremont/lcp_ramfw/config_armv8m_mpu.c
@@ -0,0 +1,86 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include "lcp_mmap.h"
+#include "mod_armv8m_mpu.h"
+
+#include
+#include
+
+#include
+
+static const uint8_t attributes[] = {
+ /* Device memory, non Gathering, non Re-ordering, non Early Write
+ Acknowledgement */
+ [MPU_ATTR_0] =
+ ARM_MPU_ATTR(ARM_MPU_ATTR_DEVICE, ARM_MPU_ATTR_DEVICE_nGnRnE),
+ /* Normal memory, non Cacheable */
+ [MPU_ATTR_1] =
+ ARM_MPU_ATTR(ARM_MPU_ATTR_NON_CACHEABLE, ARM_MPU_ATTR_NON_CACHEABLE),
+};
+
+static const ARM_MPU_Region_t regions[] = {
+ {
+ /* LCP_CORE_TCM_REGION*/
+ .RBAR = ARM_MPU_RBAR(
+ LCP_CORE_ITCM_REGION_START, /* BASE */
+ ARM_MPU_SH_NON, /* SH */
+ 0, /* RO */
+ 0, /* NP */
+ 0 /* XN */),
+ .RLAR = ARM_MPU_RLAR(LCP_CORE_ITCM_REGION_END, MPU_ATTR_1),
+ },
+ {
+ /* LCP_CORE_DTCM_REGION*/
+ .RBAR = ARM_MPU_RBAR(
+ LCP_CORE_DTCM_REGION_START, /* BASE */
+ ARM_MPU_SH_INNER, /* SH */
+ 0, /* RO */
+ 0, /* NP */
+ 1 /* XN */),
+ .RLAR = ARM_MPU_RLAR(LCP_CORE_DTCM_REGION_END, MPU_ATTR_1),
+ },
+ {
+ /* LCP_CORE_PERIPERAL_REGION */
+ .RBAR = ARM_MPU_RBAR(
+ LCP_CORE_PERIPHERAL_REGION_START, /* BASE */
+ ARM_MPU_SH_NON, /* SH */
+ 0, /* RO */
+ 0, /* NP */
+ 1 /* XN */),
+ .RLAR = ARM_MPU_RLAR(LCP_CORE_PERIPHERAL_REGION_END, MPU_ATTR_0),
+ },
+ {
+ /* LCP_SRAM_REGION*/
+ .RBAR = ARM_MPU_RBAR(
+ LCP_SRAM_REGION_START, /* BASE */
+ ARM_MPU_SH_OUTER, /* SH */
+ 0, /* RO */
+ 0, /* NP */
+ 1 /* XN */),
+ .RLAR = ARM_MPU_RLAR(LCP_SRAM_REGION_END, MPU_ATTR_1),
+ },
+ {
+ /* LCP_DEVICE_REGION */
+ .RBAR = ARM_MPU_RBAR(
+ LCP_DEVICE_REGION_START, /* BASE */
+ ARM_MPU_SH_OUTER, /* SH */
+ 0, /* RO */
+ 0, /* NP */
+ 1 /* XN */),
+ .RLAR = ARM_MPU_RLAR(LCP_DEVICE_REGION_END, MPU_ATTR_0),
+ },
+};
+
+const struct fwk_module_config config_armv8m_mpu = {
+ .data = &((struct mod_armv8m_mpu_config){
+ .region_count = FWK_ARRAY_SIZE(regions),
+ .regions = regions,
+ .attributes_count = FWK_ARRAY_SIZE(attributes),
+ .attributes = attributes,
+ }),
+};
diff --git a/product/rdfremont/lcp_ramfw/config_pl011.c b/product/rdfremont/lcp_ramfw/config_pl011.c
new file mode 100644
index 0000000000000000000000000000000000000000..b7e02046170cda51d782b1b627e108042754c409
--- /dev/null
+++ b/product/rdfremont/lcp_ramfw/config_pl011.c
@@ -0,0 +1,31 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include "lcp_mmap.h"
+
+#include
+
+#include
+#include
+#include
+#include
+
+struct fwk_module_config config_pl011 = {
+ .elements = FWK_MODULE_STATIC_ELEMENTS({
+ [0] = {
+ .name = "lcp-uart",
+ .data =
+ &(struct mod_pl011_element_cfg){
+ .reg_base = LCP_UART_BASE,
+ .baud_rate_bps = 115200,
+ .clock_rate_hz = 24 * FWK_MHZ,
+ },
+ },
+
+ [1] = { 0 },
+ }),
+};
diff --git a/product/rdfremont/lcp_ramfw/fmw_cmsis.h b/product/rdfremont/lcp_ramfw/fmw_cmsis.h
new file mode 100644
index 0000000000000000000000000000000000000000..77a7ea19ef5dab43e5e5892ddcf2ce4593156d6b
--- /dev/null
+++ b/product/rdfremont/lcp_ramfw/fmw_cmsis.h
@@ -0,0 +1,15 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef FMW_CMSIS_H
+#define FMW_CMSIS_H
+
+#include "fmw_cmsis_lcp.h"
+
+extern uint32_t SystemCoreClock;
+
+#endif /* FMW_CMSIS_H */
diff --git a/product/rdfremont/lcp_ramfw/fmw_memory.h b/product/rdfremont/lcp_ramfw/fmw_memory.h
new file mode 100644
index 0000000000000000000000000000000000000000..784f76bc73d9602618a34cfaea734fa2a5121c95
--- /dev/null
+++ b/product/rdfremont/lcp_ramfw/fmw_memory.h
@@ -0,0 +1,30 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Description:
+ * RAM firmware memory layout for the linker script.
+ */
+
+#ifndef FMW_MEMORY_H
+#define FMW_MEMORY_H
+
+#include "lcp_mmap.h"
+
+#define FMW_MEM_MODE ARCH_MEM_MODE_DUAL_REGION_RELOCATION
+
+/*
+ * RAM instruction memory
+ */
+#define FMW_MEM0_SIZE LCP_ITCM_SIZE
+#define FMW_MEM0_BASE LCP_ITCM_NS_BASE
+
+/*
+ * RAM data memory
+ */
+#define FMW_MEM1_SIZE LCP_DTCM_SIZE
+#define FMW_MEM1_BASE LCP_DTCM_NS_BASE
+
+#endif /* FMW_MEMORY_H */
diff --git a/product/rdfremont/lcp_ramfw/fmw_notification.h b/product/rdfremont/lcp_ramfw/fmw_notification.h
new file mode 100644
index 0000000000000000000000000000000000000000..ceffa17870468484594ca1e996c1ec10fd7c3838
--- /dev/null
+++ b/product/rdfremont/lcp_ramfw/fmw_notification.h
@@ -0,0 +1,16 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Description:
+ * RAM firmware notification configuration.
+ */
+
+#ifndef FMW_NOTIFICATION_H
+#define FMW_NOTIFICATION_H
+
+#define FMW_NOTIFICATION_MAX 128
+
+#endif /* FMW_NOTIFICATION_H */
diff --git a/product/rdfremont/module/mod_lcp_platform/CMakeLists.txt b/product/rdfremont/module/mod_lcp_platform/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f805e7711653258554e6fe9598a6615129c537b8
--- /dev/null
+++ b/product/rdfremont/module/mod_lcp_platform/CMakeLists.txt
@@ -0,0 +1,11 @@
+#
+# Arm SCP/MCP Software
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+add_library(${SCP_MODULE_TARGET} SCP_MODULE)
+
+target_sources(${SCP_MODULE_TARGET}
+ PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/mod_lcp_platform.c")
diff --git a/product/rdfremont/module/mod_lcp_platform/Module.cmake b/product/rdfremont/module/mod_lcp_platform/Module.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..2011d81aa604d2b3714227e35edb7e3695bcda38
--- /dev/null
+++ b/product/rdfremont/module/mod_lcp_platform/Module.cmake
@@ -0,0 +1,10 @@
+#
+# Arm SCP/MCP Software
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set(SCP_MODULE "lcp-platform")
+
+set(SCP_MODULE_TARGET "module-lcp-platform")
diff --git a/product/rdfremont/module/mod_lcp_platform/src/mod_lcp_platform.c b/product/rdfremont/module/mod_lcp_platform/src/mod_lcp_platform.c
new file mode 100644
index 0000000000000000000000000000000000000000..df4715d8a4142009bbfe98ca4619f23f0a8c6238
--- /dev/null
+++ b/product/rdfremont/module/mod_lcp_platform/src/mod_lcp_platform.c
@@ -0,0 +1,69 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#define MOD_NAME "[LCP_PLATFORM] "
+#define LCP_TIMER_RELOAD 0xFFFFFU
+
+volatile struct {
+ uint32_t counter;
+} lcp_platform_ctx;
+
+void timer_isr()
+{
+ lcp_platform_ctx.counter++;
+ /* clear interrupt flag */
+ LCP_TIMER_REG_S->INTSTATUS = 1U;
+}
+
+void mod_lcp_config_timer()
+{
+ LCP_TIMER_REG_S->CTRL = CTRL_ENABLE_MASK | CTRL_INT_EN_MASK;
+
+ LCP_TIMER_REG_S->RELOAD = LCP_TIMER_RELOAD;
+}
+
+static int mod_lcp_platform_init(
+ fwk_id_t module_id,
+ unsigned int element_count,
+ const void *unused)
+{
+ /* No elements support */
+ if (element_count > 0) {
+ return FWK_E_DATA;
+ }
+
+ return FWK_SUCCESS;
+}
+
+static int mod_lcp_platform_start(fwk_id_t id)
+{
+ fwk_interrupt_set_isr(TIMER_IRQ, timer_isr);
+
+ fwk_interrupt_enable(TIMER_IRQ);
+
+ mod_lcp_config_timer();
+
+ FWK_LOG_INFO(MOD_NAME "LCP RAM firmware initialized\n");
+
+ return FWK_SUCCESS;
+}
+
+const struct fwk_module module_lcp_platform = {
+ .type = FWK_MODULE_TYPE_SERVICE,
+ .init = mod_lcp_platform_init,
+ .start = mod_lcp_platform_start,
+};
+
+const struct fwk_module_config config_lcp_platform = { 0 };
diff --git a/product/rdfremont/product.mk b/product/rdfremont/product.mk
new file mode 100644
index 0000000000000000000000000000000000000000..346c0361e7d115a19774bcee4adee8016653f241
--- /dev/null
+++ b/product/rdfremont/product.mk
@@ -0,0 +1,11 @@
+#
+# Arm SCP/MCP Software
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+# Platforms supported by the rdn1e1 product: RDN1E1.
+
+
+BS_PRODUCT_NAME := rdfremont
+BS_FIRMWARE_LIST := lcp_ramfw
diff --git a/product/rdn1e1/include/fmw_cmsis_mcp.h b/product/rdn1e1/include/fmw_cmsis_mcp.h
index 06aa786810eaa8331f84c557aecd0db86a92b4fa..5e2c0e358b2afcc9addc0468c8d6e891df22b27f 100644
--- a/product/rdn1e1/include/fmw_cmsis_mcp.h
+++ b/product/rdn1e1/include/fmw_cmsis_mcp.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2017-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2017-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -19,6 +19,7 @@
#define __DTCM_PRESENT 0U
#define __NVIC_PRIO_BITS 3U
#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
typedef enum IRQn {
Reset_IRQn = -15,
diff --git a/product/rdn1e1/include/fmw_cmsis_scp.h b/product/rdn1e1/include/fmw_cmsis_scp.h
index c331225d0612b469b8bdb8a585f6ba13350e8401..90328a9680f2fe7c67fcdf150ca69d13d008ba0e 100644
--- a/product/rdn1e1/include/fmw_cmsis_scp.h
+++ b/product/rdn1e1/include/fmw_cmsis_scp.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2017-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2017-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -19,6 +19,7 @@
#define __DTCM_PRESENT 0U
#define __NVIC_PRIO_BITS 3U
#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock)*/
diff --git a/product/rdn1e1/mcp_ramfw/Firmware.cmake b/product/rdn1e1/mcp_ramfw/Firmware.cmake
index ba081eb4f2ad0dcdf23ec331095e672b7a401a8e..9609e043f2924be07820a169a39dd2e6eba8744d 100644
--- a/product/rdn1e1/mcp_ramfw/Firmware.cmake
+++ b/product/rdn1e1/mcp_ramfw/Firmware.cmake
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_DEBUGGER_INIT FALSE)
diff --git a/product/rdn1e1/mcp_romfw/Firmware.cmake b/product/rdn1e1/mcp_romfw/Firmware.cmake
index da8879bdd69165c65a7ad4b226ab04239dbce6b4..e17ffc5ba856fc44be301e443a9f91df41547b40 100644
--- a/product/rdn1e1/mcp_romfw/Firmware.cmake
+++ b/product/rdn1e1/mcp_romfw/Firmware.cmake
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
# The order of the modules in the following list is the order in which the
# modules are initialized, bound, started during the pre-runtime phase.
diff --git a/product/rdn1e1/scp_ramfw/Firmware.cmake b/product/rdn1e1/scp_ramfw/Firmware.cmake
index 88fdd0b472a0d3906aa184b5294860ef226b6c4d..87861385b51390b5703eaf06aaeb1746dd93f88e 100644
--- a/product/rdn1e1/scp_ramfw/Firmware.cmake
+++ b/product/rdn1e1/scp_ramfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -19,7 +19,7 @@ set(SCP_GENERATE_FLAT_BINARY_INIT TRUE)
set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_RESOURCE_PERMISSIONS_INIT TRUE)
diff --git a/product/rdn1e1/scp_romfw/Firmware.cmake b/product/rdn1e1/scp_romfw/Firmware.cmake
index d07c3c2dc4565bb75af6472613ebd16a5e3f0f27..963724bccc88c149a5b323bd4978635a8ae0965f 100644
--- a/product/rdn1e1/scp_romfw/Firmware.cmake
+++ b/product/rdn1e1/scp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
# The order of the modules in the following list is the order in which the
# modules are initialized, bound, started during the pre-runtime phase.
diff --git a/product/rdn2/include/fmw_cmsis.h b/product/rdn2/include/fmw_cmsis.h
index ee386ca273f3646f1e4bb4396858ee765b43cf70..6f8f0ce5f2405c3e544a2ae4fe443187cba4dafc 100644
--- a/product/rdn2/include/fmw_cmsis.h
+++ b/product/rdn2/include/fmw_cmsis.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -19,6 +19,7 @@
#define __DTCM_PRESENT 0U
#define __NVIC_PRIO_BITS 3U
#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock)*/
diff --git a/product/rdn2/mcp_ramfw/Firmware.cmake b/product/rdn2/mcp_ramfw/Firmware.cmake
index ee27c202dfd94d099a1402fe14fe66adfa93675a..e865d6d65defa7a575bed29aa594662976906f11 100644
--- a/product/rdn2/mcp_ramfw/Firmware.cmake
+++ b/product/rdn2/mcp_ramfw/Firmware.cmake
@@ -23,7 +23,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_DEBUGGER_INIT FALSE)
diff --git a/product/rdn2/mcp_romfw/Firmware.cmake b/product/rdn2/mcp_romfw/Firmware.cmake
index 21948ee548d7700fdb89ee09c148a7e916b10a45..7e76acbca3da04188e888507e91d126e7a118ef7 100644
--- a/product/rdn2/mcp_romfw/Firmware.cmake
+++ b/product/rdn2/mcp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_NEWLIB_NANO FALSE)
diff --git a/product/rdn2/scp_ramfw/Firmware.cmake b/product/rdn2/scp_ramfw/Firmware.cmake
index aa6f29051b3d394abf21e698ddcb32a99a815d8a..e54f2349ecb728fbb77bca31659c18c18d3fa594 100644
--- a/product/rdn2/scp_ramfw/Firmware.cmake
+++ b/product/rdn2/scp_ramfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -20,7 +20,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_NEWLIB_NANO FALSE)
diff --git a/product/rdn2/scp_romfw/Firmware.cmake b/product/rdn2/scp_romfw/Firmware.cmake
index a1c52a730edf0f038e12d8f34ffaf30b62ef4c1a..f082efe75cc7cf625d66ef8e331cb1b543ede325 100644
--- a/product/rdn2/scp_romfw/Firmware.cmake
+++ b/product/rdn2/scp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_NEWLIB_NANO FALSE)
diff --git a/product/rdv1/include/fmw_cmsis.h b/product/rdv1/include/fmw_cmsis.h
index 90168af3b79e789e8ce30055669f9069875b2ae3..fe12b3d0c8f8fdf726d36364fc63eb7d67fa5e18 100644
--- a/product/rdv1/include/fmw_cmsis.h
+++ b/product/rdv1/include/fmw_cmsis.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -19,6 +19,7 @@
#define __DTCM_PRESENT 0U
#define __NVIC_PRIO_BITS 3U
#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock)*/
typedef enum IRQn {
diff --git a/product/rdv1/mcp_ramfw/Firmware.cmake b/product/rdv1/mcp_ramfw/Firmware.cmake
index 0aa041612aa6b16e632c83209c37e06d66ff1c61..d14ce26fb90da939b4949fb507dc103a170953e8 100644
--- a/product/rdv1/mcp_ramfw/Firmware.cmake
+++ b/product/rdv1/mcp_ramfw/Firmware.cmake
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_DEBUGGER_INIT FALSE)
diff --git a/product/rdv1/mcp_romfw/Firmware.cmake b/product/rdv1/mcp_romfw/Firmware.cmake
index c65c557c8a872ec8a8afbf1f6d93b3799231af6a..7a01c2b22302c2567b693de2bb4b1ce3553017e9 100755
--- a/product/rdv1/mcp_romfw/Firmware.cmake
+++ b/product/rdv1/mcp_romfw/Firmware.cmake
@@ -13,7 +13,7 @@ set(SCP_TOOLCHAIN_INIT "GNU")
set(SCP_FIRMWARE_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}")
set(SCP_GENERATE_FLAT_BINARY TRUE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_NOTIFICATIONS TRUE)
diff --git a/product/rdv1/scp_ramfw/Firmware.cmake b/product/rdv1/scp_ramfw/Firmware.cmake
index c0cf78e1888a33d438e81432571437bcc9d1b712..68e8203b916487f36046b76a6352f882a104be26 100755
--- a/product/rdv1/scp_ramfw/Firmware.cmake
+++ b/product/rdv1/scp_ramfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -13,7 +13,7 @@ set(SCP_TOOLCHAIN_INIT "GNU")
set(SCP_FIRMWARE_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}")
set(SCP_GENERATE_FLAT_BINARY TRUE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_NOTIFICATIONS TRUE)
diff --git a/product/rdv1/scp_romfw/Firmware.cmake b/product/rdv1/scp_romfw/Firmware.cmake
index 01b1ec3743fbc9bcede8cc67aa9ca74f4d12d8ea..8a25b7ecb605d3d0489da643eb26c427e047331c 100755
--- a/product/rdv1/scp_romfw/Firmware.cmake
+++ b/product/rdv1/scp_romfw/Firmware.cmake
@@ -13,7 +13,7 @@ set(SCP_TOOLCHAIN_INIT "GNU")
set(SCP_FIRMWARE_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}")
set(SCP_GENERATE_FLAT_BINARY TRUE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_NOTIFICATIONS TRUE)
diff --git a/product/rdv1mc/include/fmw_cmsis.h b/product/rdv1mc/include/fmw_cmsis.h
index ee386ca273f3646f1e4bb4396858ee765b43cf70..6f8f0ce5f2405c3e544a2ae4fe443187cba4dafc 100644
--- a/product/rdv1mc/include/fmw_cmsis.h
+++ b/product/rdv1mc/include/fmw_cmsis.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -19,6 +19,7 @@
#define __DTCM_PRESENT 0U
#define __NVIC_PRIO_BITS 3U
#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock)*/
diff --git a/product/rdv1mc/mcp_ramfw/Firmware.cmake b/product/rdv1mc/mcp_ramfw/Firmware.cmake
index 3c7e31d8a4267cd8d53fcd7f95bb6c34a40e92fb..a69fab3de5900761e520491d87e909ba17460007 100644
--- a/product/rdv1mc/mcp_ramfw/Firmware.cmake
+++ b/product/rdv1mc/mcp_ramfw/Firmware.cmake
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_DEBUGGER_INIT FALSE)
diff --git a/product/rdv1mc/mcp_romfw/Firmware.cmake b/product/rdv1mc/mcp_romfw/Firmware.cmake
index a4369a86883a33932913c92d403d4be56110a1ab..4ac81f39cea675a1d35a3802ba698d175ce0c44c 100755
--- a/product/rdv1mc/mcp_romfw/Firmware.cmake
+++ b/product/rdv1mc/mcp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
# The order of the modules in the following list is the order in which the
# modules are initialized, bound, started during the pre-runtime phase.
diff --git a/product/rdv1mc/scp_ramfw/Firmware.cmake b/product/rdv1mc/scp_ramfw/Firmware.cmake
index 0d752a4fbdc397cc8ec22b4274cd47b43427c49a..c0ee89b26defa05d259d8f9e1e4dc99c21675c6a 100755
--- a/product/rdv1mc/scp_ramfw/Firmware.cmake
+++ b/product/rdv1mc/scp_ramfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
list(PREPEND SCP_MODULE_PATHS
"${CMAKE_CURRENT_LIST_DIR}/../module/platform_system")
diff --git a/product/rdv1mc/scp_romfw/Firmware.cmake b/product/rdv1mc/scp_romfw/Firmware.cmake
index 5236b66b21c0ccae58cfec27bc01fab3b21a5598..b76268d1c7243a32218e1f9a6f0b4b90722b4267 100755
--- a/product/rdv1mc/scp_romfw/Firmware.cmake
+++ b/product/rdv1mc/scp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
# The order of the modules in the following list is the order in which the
# modules are initialized, bound, started during the pre-runtime phase.
diff --git a/product/sgi575/include/fmw_cmsis_mcp.h b/product/sgi575/include/fmw_cmsis_mcp.h
index cf89f6398a7e9841dda23296e1a61b76dfabcd5a..2d212a522c1be5ca914d4b6bb0ced811351aefc7 100644
--- a/product/sgi575/include/fmw_cmsis_mcp.h
+++ b/product/sgi575/include/fmw_cmsis_mcp.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -19,6 +19,7 @@
#define __DTCM_PRESENT 0U
#define __NVIC_PRIO_BITS 3U
#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
typedef enum IRQn {
Reset_IRQn = -15,
diff --git a/product/sgi575/include/fmw_cmsis_scp.h b/product/sgi575/include/fmw_cmsis_scp.h
index 180d8430758c1c5e5ae5d6c71e8564006025285b..fc9f3a3049b8f8652af5fe69b0509e2386655ff3 100644
--- a/product/sgi575/include/fmw_cmsis_scp.h
+++ b/product/sgi575/include/fmw_cmsis_scp.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -19,6 +19,7 @@
#define __DTCM_PRESENT 0U
#define __NVIC_PRIO_BITS 3U
#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
typedef enum IRQn {
Reset_IRQn = -15,
diff --git a/product/sgi575/mcp_ramfw/Firmware.cmake b/product/sgi575/mcp_ramfw/Firmware.cmake
index ab78a79b1326b940f39f37a07a842e61171283e7..be14064116ec9babbe962a18e21b51bdbf32a495 100644
--- a/product/sgi575/mcp_ramfw/Firmware.cmake
+++ b/product/sgi575/mcp_ramfw/Firmware.cmake
@@ -17,7 +17,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
set(SCP_ENABLE_DEBUGGER_INIT FALSE)
diff --git a/product/sgi575/mcp_romfw/Firmware.cmake b/product/sgi575/mcp_romfw/Firmware.cmake
index e1d6b0bde8c3ad437565173c7082cdeac8351d0d..91b215009c4028e2697e0bf9f897eefe29305922 100644
--- a/product/sgi575/mcp_romfw/Firmware.cmake
+++ b/product/sgi575/mcp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -18,7 +18,7 @@ set(SCP_ENABLE_RESOURCE_PERMISSIONS_INIT FALSE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
# The order of the modules in the following list is the order in which the
# modules are initialized, bound, started during the pre-runtime phase.
diff --git a/product/sgi575/scp_ramfw/Firmware.cmake b/product/sgi575/scp_ramfw/Firmware.cmake
index f451583db3dbb74db94827c50632750b6d371384..44fc997e5cde724b8ce160ffd138b61a2fe8cf91 100644
--- a/product/sgi575/scp_ramfw/Firmware.cmake
+++ b/product/sgi575/scp_ramfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -18,7 +18,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
list(PREPEND SCP_MODULE_PATHS
"${CMAKE_CURRENT_LIST_DIR}/../module/sgi575_system")
diff --git a/product/sgi575/scp_romfw/Firmware.cmake b/product/sgi575/scp_romfw/Firmware.cmake
index 43cf29c5c1081031cddae89e9fa4a1b83fe87e0e..f2beea8e336c86df3be91b2e65a09bf65f0b6dd8 100644
--- a/product/sgi575/scp_romfw/Firmware.cmake
+++ b/product/sgi575/scp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -18,7 +18,7 @@ set(SCP_ENABLE_RESOURCE_PERMISSIONS_INIT FALSE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
# The order of the modules in the following list is the order in which the
# modules are initialized, bound, started during the pre-runtime phase.
diff --git a/product/sgm775/include/fmw_cmsis.h b/product/sgm775/include/fmw_cmsis.h
index 934203779d2ab052d54fd814e75eb23b851616ad..6e0fc77b0600e71bf2273723338fbba73b281288 100644
--- a/product/sgm775/include/fmw_cmsis.h
+++ b/product/sgm775/include/fmw_cmsis.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -11,10 +11,11 @@
#include
#define __CHECK_DEVICE_DEFINES
-#define __CM3_REV 0x0201
-#define __MPU_PRESENT 1
-#define __NVIC_PRIO_BITS 3
-#define __Vendor_SysTickConfig 0
+#define __CM3_REV 0x0201U
+#define __MPU_PRESENT 1U
+#define __NVIC_PRIO_BITS 3U
+#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock)*/
diff --git a/product/sgm775/scp_ramfw/Firmware.cmake b/product/sgm775/scp_ramfw/Firmware.cmake
index 6ee05605763055cb3948a4b98a278ef562a5367f..ab8c3ff5594eec1dbaf694862eb643cc1e37628c 100644
--- a/product/sgm775/scp_ramfw/Firmware.cmake
+++ b/product/sgm775/scp_ramfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -19,7 +19,7 @@ set(SCP_ENABLE_NOTIFICATIONS TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
list(PREPEND SCP_MODULE_PATHS
"${CMAKE_CURRENT_LIST_DIR}/../module/sgm775_ddr_phy500")
diff --git a/product/sgm775/scp_romfw/Firmware.cmake b/product/sgm775/scp_romfw/Firmware.cmake
index 7abaf93e609f8977fecc69cfebe39302e439f6a9..21db9710ef46702fbfdcc108855cfdf37e7ce914 100644
--- a/product/sgm775/scp_romfw/Firmware.cmake
+++ b/product/sgm775/scp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -18,7 +18,7 @@ set(SCP_ENABLE_RESOURCE_PERMISSIONS FALSE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
# The order of the modules in the following list is the order in which the
# modules are initialized, bound, started during the pre-runtime phase.
diff --git a/product/sgm776/include/fmw_cmsis.h b/product/sgm776/include/fmw_cmsis.h
index 4db3fda901d320de5de39223981e3158837b3656..62f635b1c7b6636c563a08c2a29be08ac43973d1 100644
--- a/product/sgm776/include/fmw_cmsis.h
+++ b/product/sgm776/include/fmw_cmsis.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -11,10 +11,11 @@
#include
#define __CHECK_DEVICE_DEFINES
-#define __CM3_REV 0x0201
-#define __MPU_PRESENT 1
-#define __NVIC_PRIO_BITS 3
-#define __Vendor_SysTickConfig 0
+#define __CM3_REV 0x0201U
+#define __MPU_PRESENT 1U
+#define __NVIC_PRIO_BITS 3U
+#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock)*/
typedef enum IRQn {
diff --git a/product/sgm776/scp_ramfw/Firmware.cmake b/product/sgm776/scp_ramfw/Firmware.cmake
index 7a357a30be99e52eecf5071c01e1b747fe8c21b2..641c7290d71450b42c65c709ce041438e27f81c4 100644
--- a/product/sgm776/scp_ramfw/Firmware.cmake
+++ b/product/sgm776/scp_ramfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -18,7 +18,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
list(PREPEND SCP_MODULE_PATHS
"${CMAKE_CURRENT_LIST_DIR}/../module/sgm776_system")
diff --git a/product/sgm776/scp_romfw/Firmware.cmake b/product/sgm776/scp_romfw/Firmware.cmake
index f3ee2b6a302f341c9504fbcc8df8abef18cd1c6d..52f1fbed62cfcb51bc81dca50676d9482dabf6e4 100644
--- a/product/sgm776/scp_romfw/Firmware.cmake
+++ b/product/sgm776/scp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -18,7 +18,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
# The order of the modules in the following list is the order in which the
# modules are initialized, bound, started during the pre-runtime phase.
diff --git a/product/synquacer/include/fmw_cmsis.h b/product/synquacer/include/fmw_cmsis.h
index 4ae0dfb30d744f6f7d0106f618adf905a98d2f2c..f530295c1fc7b045b6d8f80b6a8661054e9f2054 100644
--- a/product/synquacer/include/fmw_cmsis.h
+++ b/product/synquacer/include/fmw_cmsis.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -11,10 +11,11 @@
#include
#define __CHECK_DEVICE_DEFINES
-#define __CM3_REV 0x0201
-#define __MPU_PRESENT 1
-#define __NVIC_PRIO_BITS 3
-#define __Vendor_SysTickConfig 0
+#define __CM3_REV 0x0201U
+#define __MPU_PRESENT 1U
+#define __NVIC_PRIO_BITS 3U
+#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
extern uint32_t SystemCoreClock;
diff --git a/product/synquacer/scp_ramfw/Firmware.cmake b/product/synquacer/scp_ramfw/Firmware.cmake
index 181b45059247bd15234b15808a7c5f90f13494f6..edfecf23f90ccaae9e2be43c8d6910ca032e972d 100644
--- a/product/synquacer/scp_ramfw/Firmware.cmake
+++ b/product/synquacer/scp_ramfw/Firmware.cmake
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
list(PREPEND SCP_MODULE_PATHS
"${CMAKE_CURRENT_LIST_DIR}/../module/scmi_vendor_ext")
diff --git a/product/synquacer/scp_romfw/Firmware.cmake b/product/synquacer/scp_romfw/Firmware.cmake
index 5a5a0cdce91b61bc475fae5c06cbe982e644b465..16a9f4bcefaf42d08ebd69e830f1a4c451fca06d 100644
--- a/product/synquacer/scp_romfw/Firmware.cmake
+++ b/product/synquacer/scp_romfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
list(PREPEND SCP_MODULE_PATHS
"${CMAKE_CURRENT_LIST_DIR}/../module/synquacer_pik_clock")
diff --git a/product/tc0/include/fmw_cmsis.h b/product/tc0/include/fmw_cmsis.h
index c7add15cbfc0cfeac98a5c44ad6ca57821f0206c..8c4a1320097ed3b1b6d1da1bb43b42d56c8913e6 100644
--- a/product/tc0/include/fmw_cmsis.h
+++ b/product/tc0/include/fmw_cmsis.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -19,6 +19,7 @@
#define __DTCM_PRESENT 0U
#define __NVIC_PRIO_BITS 3U
#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock)*/
diff --git a/product/tc0/scp_ramfw/Firmware.cmake b/product/tc0/scp_ramfw/Firmware.cmake
index 11d8eaab06317646f0268665d2204db539b682bf..efc8c31929a32b8fa447437d825873cc0dc736e2 100644
--- a/product/tc0/scp_ramfw/Firmware.cmake
+++ b/product/tc0/scp_ramfw/Firmware.cmake
@@ -29,7 +29,7 @@ set(SCP_ENABLE_PLUGIN_HANDLER_INIT FALSE)
set(SCP_PLATFORM_VARIANT_INIT 0)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
list(PREPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_LIST_DIR}/../module/tc0_system")
diff --git a/product/tc0/scp_romfw/Firmware.cmake b/product/tc0/scp_romfw/Firmware.cmake
index ab4468bef3b25cec74bc8df5139b98820f7e36a7..7f6586c2b62bc05f65a26ed0e8139de99ee39cd4 100644
--- a/product/tc0/scp_romfw/Firmware.cmake
+++ b/product/tc0/scp_romfw/Firmware.cmake
@@ -23,7 +23,7 @@ set(SCP_ENABLE_IPO_INIT FALSE)
set(SCP_PLATFORM_VARIANT_INIT 0)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
list(PREPEND SCP_MODULE_PATHS "${CMAKE_SOURCE_DIR}/module/cmn_booker")
diff --git a/product/tc1/include/fmw_cmsis.h b/product/tc1/include/fmw_cmsis.h
index a1925c7399abac8eb916d0e50316a587f299503d..f2f78fb600e2803dabcd25686ed75af75c7b47a0 100644
--- a/product/tc1/include/fmw_cmsis.h
+++ b/product/tc1/include/fmw_cmsis.h
@@ -1,6 +1,6 @@
/*
* Arm SCP/MCP Software
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -19,6 +19,7 @@
#define __DTCM_PRESENT 0U
#define __NVIC_PRIO_BITS 3U
#define __Vendor_SysTickConfig 0U
+#define __VTOR_PRESENT 1U
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock)*/
diff --git a/product/tc1/scp_ramfw/Firmware.cmake b/product/tc1/scp_ramfw/Firmware.cmake
index f3a37172c5bb70badbe8ab17e575aeb222991a0a..13d66ed61711ac63b168c51acdfd09bff554fb45 100644
--- a/product/tc1/scp_ramfw/Firmware.cmake
+++ b/product/tc1/scp_ramfw/Firmware.cmake
@@ -1,6 +1,6 @@
#
# Arm SCP/MCP Software
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -23,7 +23,7 @@ set(SCP_ENABLE_RESOURCE_PERMISSIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
list(PREPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_LIST_DIR}/../module/tc1_system")
diff --git a/product/tc1/scp_romfw/Firmware.cmake b/product/tc1/scp_romfw/Firmware.cmake
index fee95bd73f292cf0d0c84ad6060fdb8a5b1c6af5..1a521a609f8932d00dbf11aeff09e527ad9dde99 100644
--- a/product/tc1/scp_romfw/Firmware.cmake
+++ b/product/tc1/scp_romfw/Firmware.cmake
@@ -21,7 +21,7 @@ set(SCP_ENABLE_NOTIFICATIONS_INIT TRUE)
set(SCP_ENABLE_IPO_INIT FALSE)
-set(SCP_ARCHITECTURE "armv7-m")
+set(SCP_ARCHITECTURE "arm-m")
list(PREPEND SCP_MODULE_PATHS "${CMAKE_SOURCE_DIR}/module/cmn_booker")