corstone300: Add CMSE flag for bootloader
* Remove cmake magic
* Added FPU tests
* Remove some duplications
Signed-off-by: Dávid Házi <david.hazi@arm.com>
Change-Id: I076788eb12b3b164a767fb3f832f02bbcb96d361
diff --git a/platform/ext/target/arm/mps3/corstone300/an547/CMakeLists.txt b/platform/ext/target/arm/mps3/corstone300/an547/CMakeLists.txt
index 532a4bb..dc77e7e 100644
--- a/platform/ext/target/arm/mps3/corstone300/an547/CMakeLists.txt
+++ b/platform/ext/target/arm/mps3/corstone300/an547/CMakeLists.txt
@@ -1,5 +1,5 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2020-2023, Arm Limited. All rights reserved.
+# Copyright (c) 2020-2024, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -35,6 +35,7 @@
${PLATFORM_DIR}/ext/target/arm/drivers/flash/common
${PLATFORM_DIR}/ext/driver
device/include
+ ${CORSTONE300_COMMON_DIR}/cmsis_drivers/config/secure
${CORSTONE300_COMMON_DIR}/device/config
)
diff --git a/platform/ext/target/arm/mps3/corstone300/an552/CMakeLists.txt b/platform/ext/target/arm/mps3/corstone300/an552/CMakeLists.txt
index 22260a3..1c54372 100644
--- a/platform/ext/target/arm/mps3/corstone300/an552/CMakeLists.txt
+++ b/platform/ext/target/arm/mps3/corstone300/an552/CMakeLists.txt
@@ -1,5 +1,5 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2020-2023, Arm Limited. All rights reserved.
+# Copyright (c) 2020-2024, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -30,6 +30,7 @@
${PLATFORM_DIR}/ext/target/arm/drivers/flash/common
${PLATFORM_DIR}/ext/driver
device/include
+ ${CORSTONE300_COMMON_DIR}/cmsis_drivers/config/secure
${CORSTONE300_COMMON_DIR}/device/config
)
diff --git a/platform/ext/target/arm/mps3/corstone300/common/common.cmake b/platform/ext/target/arm/mps3/corstone300/common/common.cmake
index 0a7d86a..0ea802d 100644
--- a/platform/ext/target/arm/mps3/corstone300/common/common.cmake
+++ b/platform/ext/target/arm/mps3/corstone300/common/common.cmake
@@ -38,6 +38,11 @@
$<$<C_COMPILER_ID:GNU>:${PLATFORM_DIR}/ext/common/gcc/tfm_common_bl2.ld>
$<$<C_COMPILER_ID:IAR>:${PLATFORM_DIR}/ext/common/iar/tfm_common_bl2.icf>
)
+
+ target_compile_options(bl2_scatter
+ PUBLIC
+ ${COMPILER_CMSE_FLAG}
+ )
endif()
#========================= Device definition lib ===============================#
@@ -64,104 +69,14 @@
${CMAKE_SOURCE_DIR}
)
-add_library(device_definition_s STATIC)
-target_sources(device_definition_s
- PUBLIC
- ${CORSTONE300_COMMON_DIR}/device/source/platform_s_device_definition.c
-)
-
-target_compile_options(device_definition_s
- PRIVATE
- ${COMPILER_CMSE_FLAG}
-)
-
-add_library(device_definition_bl2 STATIC)
-target_sources(device_definition_bl2
- PUBLIC
- ${CORSTONE300_COMMON_DIR}/device/source/platform_s_device_definition.c
-)
-
-#========================= CMSIS lib ===============================#
-
-add_library(cmsis_includes INTERFACE)
-target_include_directories(cmsis_includes
- INTERFACE
- ${CORSTONE300_COMMON_DIR}/device/include
- ${CORSTONE300_COMMON_DIR}/cmsis_drivers
- ${CORSTONE300_COMMON_DIR}/partition
- ${CMAKE_CURRENT_SOURCE_DIR}/partition
-)
-
-add_library(cmsis_includes_s INTERFACE)
-add_library(cmsis_includes_bl2 INTERFACE)
-target_link_libraries(cmsis_includes_s INTERFACE cmsis_includes cmsis)
-target_link_libraries(cmsis_includes_bl2 INTERFACE cmsis_includes cmsis)
-target_include_directories(cmsis_includes_bl2
- INTERFACE
- ${CORSTONE300_COMMON_DIR}/cmsis_drivers/config/secure
-)
-
-target_compile_options(cmsis_includes_bl2
- INTERFACE
- ${BL2_COMPILER_CP_FLAG}
-)
-
-target_link_options(cmsis_includes_bl2
- INTERFACE
- ${BL2_LINKER_CP_OPTION}
-)
-
-
-target_include_directories(cmsis_includes_s
- INTERFACE
- ${CORSTONE300_COMMON_DIR}/cmsis_drivers/config/secure
-)
-
-target_compile_options(cmsis_includes_s
- INTERFACE
- ${COMPILER_CMSE_FLAG}
- ${COMPILER_CP_FLAG}
-)
-
-target_link_options(cmsis_includes_s
- INTERFACE
- ${LINKER_CP_OPTION}
-)
-
-#========================= Linking ===============================#
-
-target_link_libraries(device_definition_s PUBLIC device_definition)
-target_link_libraries(device_definition_bl2 PUBLIC device_definition)
-
-target_link_libraries(device_definition_s PRIVATE cmsis_includes_s)
-target_link_libraries(device_definition_bl2 PRIVATE cmsis_includes_bl2)
-
-target_link_libraries(platform_bl2
- PUBLIC
- cmsis_includes
- cmsis
- PRIVATE
- device_definition_bl2
- cmsis_includes_bl2
-)
-
-target_link_libraries(platform_s
- PUBLIC
- cmsis_includes_s
- INTERFACE
- device_definition
- PRIVATE
- device_definition_s
-)
-
#========================= Platform Secure ====================================#
target_include_directories(platform_s
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
${CORSTONE300_COMMON_DIR}
- PRIVATE
- ${CORSTONE300_COMMON_DIR}
+ ${CORSTONE300_COMMON_DIR}/cmsis_drivers
+ ${CORSTONE300_COMMON_DIR}/cmsis_drivers/config/secure
${CORSTONE300_COMMON_DIR}/device
${CORSTONE300_COMMON_DIR}/services/src
${PLATFORM_DIR}/ext/common
@@ -173,6 +88,7 @@
${CORSTONE300_COMMON_DIR}/cmsis_drivers/Driver_TGU.c
${CORSTONE300_COMMON_DIR}/cmsis_drivers/Driver_SSE300_PPC.c
${CORSTONE300_COMMON_DIR}/cmsis_drivers/Driver_USART.c
+ ${CORSTONE300_COMMON_DIR}/device/source/platform_s_device_definition.c
${CORSTONE300_COMMON_DIR}/device/source/system_core_init.c
${CORSTONE300_COMMON_DIR}/native_drivers/ppc_sse300_drv.c
${PLATFORM_DIR}/ext/target/arm/drivers/tgu/tgu_armv8_m_drv.c
@@ -193,11 +109,6 @@
$<$<OR:$<BOOL:${TFM_PARTITION_SLIH_TEST}>,$<BOOL:${TFM_PARTITION_FLIH_TEST}>>:${PLATFORM_DIR}/ext/target/arm/drivers/timer/armv8m/systimer_armv8-m_drv.c>
)
-target_compile_options(platform_s
- PUBLIC
- ${COMPILER_CMSE_FLAG}
-)
-
# To configure S and NS timer in S side for FP interrupt test
target_compile_definitions(platform_s
PUBLIC
@@ -212,6 +123,24 @@
ETHOSU_LOG_SEVERITY=${ETHOSU_LOG_SEVERITY}
)
+target_compile_options(platform_s
+ PUBLIC
+ ${COMPILER_CP_FLAG}
+ ${COMPILER_CMSE_FLAG}
+)
+
+target_link_options(platform_s
+ PUBLIC
+ ${LINKER_CP_OPTION}
+)
+
+target_link_libraries(platform_s
+ PUBLIC
+ device_definition
+ PRIVATE
+ tfm_sprt # For tfm_strnlen in attest HAL
+)
+
#========================= Platform BL2 =======================================#
if(BL2)
@@ -223,21 +152,60 @@
${CORSTONE300_COMMON_DIR}/bl2/boot_hal_bl2.c
)
+ target_compile_options(bl2
+ PUBLIC
+ ${BL2_COMPILER_CP_FLAG}
+ ${COMPILER_CMSE_FLAG}
+ )
+
+ target_link_options(bl2
+ PUBLIC
+ ${BL2_LINKER_CP_OPTION}
+ )
+
target_sources(platform_bl2
PRIVATE
${CORSTONE300_COMMON_DIR}/cmsis_drivers/Driver_USART.c
+ ${CORSTONE300_COMMON_DIR}/device/source/platform_s_device_definition.c
${CORSTONE300_COMMON_DIR}/device/source/system_core_init.c
- ${PLATFORM_DIR}/ext/target/arm/drivers/usart/cmsdk/uart_cmsdk_drv.c
${PLATFORM_DIR}/ext/target/arm/drivers/flash/emulated/emulated_flash_drv.c
+ ${PLATFORM_DIR}/ext/target/arm/drivers/usart/cmsdk/uart_cmsdk_drv.c
)
target_include_directories(platform_bl2
+ PUBLIC
+ device/include
+ ${CORSTONE300_COMMON_DIR}/device/include
PRIVATE
${CORSTONE300_COMMON_DIR}/device
${CORSTONE300_COMMON_DIR}/services/src
- ${CORSTONE300_COMMON_DIR}/device/config
+ ${CMAKE_CURRENT_SOURCE_DIR}/device/config
+ ${CORSTONE300_COMMON_DIR}/cmsis_drivers/config/secure
${CORSTONE300_COMMON_DIR}
)
+
+ target_compile_definitions(platform_bl2
+ PUBLIC
+ $<$<AND:$<BOOL:${CONFIG_TFM_BOOT_STORE_MEASUREMENTS}>,$<BOOL:${TFM_PARTITION_MEASURED_BOOT}>>:MEASURED_BOOT_API>
+ )
+
+ target_compile_options(platform_bl2
+ PUBLIC
+ ${BL2_COMPILER_CP_FLAG}
+ ${COMPILER_CMSE_FLAG}
+ )
+
+ target_link_options(platform_bl2
+ PUBLIC
+ ${BL2_LINKER_CP_OPTION}
+ )
+
+ target_link_libraries(platform_bl2
+ PRIVATE
+ $<$<AND:$<BOOL:${CONFIG_TFM_BOOT_STORE_MEASUREMENTS}>,$<BOOL:${TFM_PARTITION_MEASURED_BOOT}>>:tfm_boot_status>
+ device_definition
+ )
+
endif()
#========================= tfm_spm ============================================#
@@ -259,10 +227,6 @@
${PLATFORM_DIR}/ext/common/mpc_ppc_faults.c
)
-if(NOT PLATFORM_DEFAULT_PROVISIONING)
- add_subdirectory(${PLATFORM_DIR}/ext/target/arm/mps3/common/provisioning provisioning)
-endif()
-
#========================= platform_region_defs ===============================#
target_compile_definitions(platform_region_defs
INTERFACE
@@ -274,6 +238,10 @@
PROVISIONING_DATA_PADDED_SIZE=${PROVISIONING_DATA_PADDED_SIZE}
)
+if(NOT PLATFORM_DEFAULT_PROVISIONING)
+add_subdirectory(${PLATFORM_DIR}/ext/target/arm/mps3/common/provisioning provisioning)
+endif()
+
#========================= Files for building NS side platform ================#
target_compile_definitions(tfm_config
INTERFACE
@@ -290,11 +258,6 @@
${CORSTONE300_COMMON_DIR}/cmsis_drivers/config/non_secure/RTE_Device.h
DESTINATION ${INSTALL_PLATFORM_NS_DIR}/common/cmsis_drivers)
-install(FILES ${PLATFORM_DIR}/ext/common/common_target_cfg.h
- ${PLATFORM_DIR}/ext/common/test_interrupt.h
- ${PLATFORM_DIR}/ext/common/test_interrupt.c
- DESTINATION ${INSTALL_PLATFORM_NS_DIR}/ext/common)
-
install(DIRECTORY ${CORSTONE300_COMMON_DIR}/device
${CORSTONE300_COMMON_DIR}/native_drivers
${CORSTONE300_COMMON_DIR}/cmsis_drivers
@@ -307,22 +270,26 @@
${PLATFORM_DIR}/ext/driver/Driver_Common.h
DESTINATION ${INSTALL_PLATFORM_NS_DIR}/ext/driver)
-install(FILES ${PLATFORM_DIR}/include/tfm_plat_defs.h
+install(FILES ${CORSTONE300_COMMON_DIR}/target_cfg.h
+ ${CORSTONE300_COMMON_DIR}/tfm_peripherals_def.h
+ ${PLATFORM_DIR}/include/tfm_plat_defs.h
DESTINATION ${INSTALL_PLATFORM_NS_DIR}/common/include)
+install(FILES ${PLATFORM_DIR}/ext/common/common_target_cfg.h
+ ${PLATFORM_DIR}/ext/common/test_interrupt.h
+ ${PLATFORM_DIR}/ext/common/test_interrupt.c
+ DESTINATION ${INSTALL_PLATFORM_NS_DIR}/ext/common)
+
install(DIRECTORY ${CORSTONE300_COMMON_DIR}/partition
DESTINATION ${INSTALL_PLATFORM_NS_DIR}/common)
install(FILES ${CORSTONE300_COMMON_DIR}/cpuarch.cmake
${CORSTONE300_COMMON_DIR}/config.cmake
${CORSTONE300_COMMON_DIR}/target_cfg.h
- ${CORSTONE300_COMMON_DIR}/tfm_peripherals_def.h
+ ${CORSTONE300_COMMON_DIR}/check_config.cmake
${CORSTONE300_COMMON_DIR}/ns/common.cmake
DESTINATION ${INSTALL_PLATFORM_NS_DIR}/common)
-install(FILES ${CORSTONE300_COMMON_DIR}/check_config.cmake
- DESTINATION ${INSTALL_PLATFORM_NS_DIR})
-
install(DIRECTORY ${CORSTONE300_COMMON_DIR}/tests
DESTINATION ${INSTALL_PLATFORM_NS_DIR})
diff --git a/platform/ext/target/arm/mps3/corstone300/common/libflash_drivers.cmake b/platform/ext/target/arm/mps3/corstone300/common/libflash_drivers.cmake
index 0b71328..ef314ad 100644
--- a/platform/ext/target/arm/mps3/corstone300/common/libflash_drivers.cmake
+++ b/platform/ext/target/arm/mps3/corstone300/common/libflash_drivers.cmake
@@ -12,20 +12,21 @@
target_link_libraries(flash_drivers_s
PRIVATE
+ cmsis
flash_drivers
- cmsis_includes_s
device_definition
)
target_link_libraries(flash_drivers_bl2
PRIVATE
+ cmsis
flash_drivers
- cmsis_includes_bl2
device_definition
)
target_compile_options(flash_drivers_s
PRIVATE
${COMPILER_CP_FLAG}
+ ${COMPILER_CMSE_FLAG}
)
target_link_options(flash_drivers_s
@@ -36,6 +37,7 @@
target_compile_options(flash_drivers_bl2
PRIVATE
${BL2_COMPILER_CP_FLAG}
+ ${COMPILER_CMSE_FLAG}
)
target_link_options(flash_drivers_bl2
diff --git a/platform/ext/target/arm/mps3/corstone300/common/ns/common.cmake b/platform/ext/target/arm/mps3/corstone300/common/ns/common.cmake
index 5abc14e..1980aaa 100644
--- a/platform/ext/target/arm/mps3/corstone300/common/ns/common.cmake
+++ b/platform/ext/target/arm/mps3/corstone300/common/ns/common.cmake
@@ -43,63 +43,44 @@
${PLATFORM_DIR}/ext/target/arm/drivers/mpu/armv8m
${PLATFORM_DIR}/ext/target/arm/drivers/counter/armv8m
${PLATFORM_DIR}/ext/target/arm/drivers/timer/armv8m
-)
-
-add_library(device_definition_ns STATIC)
-target_sources(device_definition_ns
- PUBLIC
- ${CORSTONE300_COMMON_DIR}/device/source/platform_ns_device_definition.c
-)
-
-#========================= CMSIS lib ===============================#
-
-add_library(cmsis_includes INTERFACE)
-target_include_directories(cmsis_includes
- INTERFACE
- ${CORSTONE300_COMMON_DIR}/device/config
- ${CORSTONE300_COMMON_DIR}/device/include
- ${CORSTONE300_COMMON_DIR}/cmsis_drivers
- ${PLATFORM_DIR}/ext/cmsis/Include
- ${PLATFORM_DIR}/ext/cmsis/Include/m-profile
- ${CORSTONE300_COMMON_DIR}/partition
- ${CMAKE_CURRENT_SOURCE_DIR}/include
- ${CMAKE_CURRENT_SOURCE_DIR}/partition
- ${CMAKE_CURRENT_SOURCE_DIR}/ext/driver
- ${PLATFORM_DIR}/ext/common
- ${CORSTONE300_COMMON_DIR}
-)
-
-add_library(cmsis_includes_ns INTERFACE)
-target_link_libraries(cmsis_includes_ns INTERFACE cmsis_includes)
-target_include_directories(cmsis_includes_ns
- INTERFACE
- ${CORSTONE300_COMMON_DIR}/cmsis_drivers/config/non_secure
+ ${ETHOS_DRIVER_PATH}/src
+ ${ETHOS_DRIVER_PATH}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/device/config
)
#========================= Platform Non-Secure ================================#
target_sources(platform_ns
PRIVATE
+ ${CORSTONE300_COMMON_DIR}/device/source/platform_ns_device_definition.c
${CORSTONE300_COMMON_DIR}/cmsis_drivers/Driver_USART.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ext/target/arm/drivers/usart/cmsdk/uart_cmsdk_drv.c
+ ${PLATFORM_DIR}/ext/target/arm/drivers/usart/cmsdk/uart_cmsdk_drv.c
INTERFACE
$<$<BOOL:${TEST_NS_FPU}>:${CORSTONE300_COMMON_DIR}/device/source/corstone300_ns_init.c>
$<$<BOOL:${TEST_NS_FPU}>:${PLATFORM_DIR}/ext/common/test_interrupt.c>
)
+target_include_directories(platform_ns
+ PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}/device/config
+ ${CORSTONE300_COMMON_DIR}/device/include
+ ${CORSTONE300_COMMON_DIR}/include
+ ${CORSTONE300_COMMON_DIR}/cmsis_drivers
+ ${PLATFORM_DIR}/ext/cmsis/Include
+ ${PLATFORM_DIR}/ext/cmsis/Include/m-profile
+ ${CORSTONE300_COMMON_DIR}/partition
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/ext/driver
+ ${CMAKE_CURRENT_SOURCE_DIR}/ext/common
+ ${CORSTONE300_COMMON_DIR}/cmsis_drivers/config/non_secure
+)
+
target_compile_definitions(platform_ns
PUBLIC
$<$<BOOL:${TEST_NS_FPU}>:TEST_NS_FPU>
)
-#========================= Linking ===============================#
-
-target_link_libraries(device_definition_ns PUBLIC device_definition)
-target_link_libraries(device_definition_ns PRIVATE cmsis_includes_ns)
-
target_link_libraries(platform_ns
PUBLIC
- cmsis_includes_ns
- PRIVATE
- device_definition_ns
+ device_definition
)
diff --git a/platform/ext/target/arm/mps3/corstone300/fvp/CMakeLists.txt b/platform/ext/target/arm/mps3/corstone300/fvp/CMakeLists.txt
index f326a57..b4ccec0 100644
--- a/platform/ext/target/arm/mps3/corstone300/fvp/CMakeLists.txt
+++ b/platform/ext/target/arm/mps3/corstone300/fvp/CMakeLists.txt
@@ -1,5 +1,5 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2020-2023, Arm Limited. All rights reserved.
+# Copyright (c) 2020-2024, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -16,6 +16,7 @@
target_include_directories(flash_drivers
INTERFACE
${PLATFORM_DIR}/ext/driver
+ ${CORSTONE300_COMMON_DIR}/cmsis_drivers/config/secure
${CMAKE_CURRENT_SOURCE_DIR}/partition
${CORSTONE300_COMMON_DIR}/partition
${PLATFORM_DIR}/ext/target/arm/drivers/flash/common
@@ -40,10 +41,8 @@
RENAME cpuarch.cmake)
install(FILES ${TARGET_PLATFORM_PATH}/ns/CMakeLists.txt
+ ${TARGET_PLATFORM_PATH}/cmsis_drivers/Driver_Flash.c
DESTINATION ${INSTALL_PLATFORM_NS_DIR})
install(FILES ${TARGET_PLATFORM_PATH}/config.cmake
DESTINATION ${INSTALL_PLATFORM_NS_DIR})
-
-install(FILES ${TARGET_PLATFORM_PATH}/cmsis_drivers/Driver_Flash.c
- DESTINATION ${INSTALL_PLATFORM_NS_DIR})