Build: Convert secure_fw dir to modern cmake

Rewrite cmake files inside the secure_fw directory. Removed generated
files as they are now generated into the build tree. Alter header
includes where include paths have changed.

WARNING: This change will not build in isolation, it requires _all_
other cmake changes to successfully build. It is split out only for
clarity of changes.

Change-Id: Ib1b13c9b69f2fcb1ff354ed6b5e5b717a207e3b8
Signed-off-by: Raef Coles <raef.coles@arm.com>
diff --git a/secure_fw/spm/CMakeLists.txt b/secure_fw/spm/CMakeLists.txt
new file mode 100644
index 0000000..2caf429
--- /dev/null
+++ b/secure_fw/spm/CMakeLists.txt
@@ -0,0 +1,144 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2020, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+cmake_minimum_required(VERSION 3.13)
+
+add_library(tfm_spm STATIC)
+add_library(tfm_boot_status INTERFACE)
+add_library(tfm_arch INTERFACE)
+add_library(tfm_utilities INTERFACE)
+
+set(TFM_PARTITION_PLATFORM ON CACHE BOOL "Enable the TF-M Platform partition")
+
+target_include_directories(tfm_spm
+    PUBLIC
+        ${CMAKE_CURRENT_SOURCE_DIR}
+        ${CMAKE_CURRENT_SOURCE_DIR}/include
+        $<$<BOOL:${TFM_PSA_API}>:${CMAKE_CURRENT_SOURCE_DIR}/cmsis_psa>
+        $<$<BOOL:${TFM_PSA_API}>:${CMAKE_CURRENT_SOURCE_DIR}/cmsis_psa/include>
+        $<$<NOT:$<BOOL:${TFM_PSA_API}>>:${CMAKE_CURRENT_SOURCE_DIR}/cmsis_func>
+        $<$<NOT:$<BOOL:${TFM_PSA_API}>>:${CMAKE_CURRENT_SOURCE_DIR}/cmsis_func/include>
+    PRIVATE
+        ${CMAKE_SOURCE_DIR}
+        ${CMAKE_BINARY_DIR}/generated
+        $<$<BOOL:${TFM_PSA_API}>:${CMAKE_BINARY_DIR}/generated/secure_fw/spm/cmsis_psa>
+        $<$<NOT:$<BOOL:${TFM_PSA_API}>>:${CMAKE_BINARY_DIR}/generated/secure_fw/spm/cmsis_func>
+)
+
+target_sources(tfm_spm
+    PRIVATE
+        $<$<BOOL:${TFM_PARTITION_INITIAL_ATTESTATION}>:common/tfm_boot_data.c>
+        common/tfm_core_utils.c
+        common/utilities.c
+        $<$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>:cmsis_psa/tfm_multi_core.c>
+        $<$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>:cmsis_psa/tfm_multi_core_mem_check.c>
+        $<$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>:cmsis_psa/tfm_rpc.c>
+        $<$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>:cmsis_psa/tfm_spe_mailbox.c>
+        $<$<NOT:$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>>:common/tfm_core_mem_check.c>
+        $<$<BOOL:${TFM_PSA_API}>:cmsis_psa/arch/tfm_arch.c>
+        $<$<BOOL:${TFM_PSA_API}>:cmsis_psa/main.c>
+        $<$<BOOL:${TFM_PSA_API}>:cmsis_psa/spm_ipc.c>
+        $<$<BOOL:${TFM_PSA_API}>:common/spm_psa_client_call.c>
+        $<$<BOOL:${TFM_PSA_API}>:common/psa_client_service_apis.c>
+        $<$<BOOL:${TFM_PSA_API}>:cmsis_psa/tfm_core_svcalls_ipc.c>
+        $<$<AND:$<BOOL:${TFM_PSA_API}>,$<NOT:$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>>>:cmsis_psa/tfm_nspm_ipc.c>
+        $<$<BOOL:${TFM_PSA_API}>:cmsis_psa/tfm_pools.c>
+        $<$<BOOL:${TFM_PSA_API}>:cmsis_psa/tfm_thread.c>
+        $<$<BOOL:${TFM_PSA_API}>:cmsis_psa/tfm_wait.c>
+        $<$<NOT:$<BOOL:${TFM_PSA_API}>>:cmsis_func/main.c>
+        $<$<NOT:$<BOOL:${TFM_PSA_API}>>:cmsis_func/arch.c>
+        $<$<NOT:$<BOOL:${TFM_PSA_API}>>:cmsis_func/spm_func.c>
+        $<$<NOT:$<BOOL:${TFM_PSA_API}>>:cmsis_func/tfm_core_svcalls_func.c>
+        $<$<NOT:$<BOOL:${TFM_PSA_API}>>:cmsis_func/tfm_nspm_func.c>
+        $<$<NOT:$<BOOL:${TFM_PSA_API}>>:cmsis_func/tfm_secure_api.c>
+        #TODO add other arches
+        $<$<AND:$<BOOL:${TFM_PSA_API}>,$<STREQUAL:${CMAKE_SYSTEM_ARCHITECTURE},armv8-m.base>>:cmsis_psa/arch/tfm_arch_v8m_base.c>
+        $<$<AND:$<BOOL:${TFM_PSA_API}>,$<STREQUAL:${CMAKE_SYSTEM_ARCHITECTURE},armv8-m.main>>:cmsis_psa/arch/tfm_arch_v8m_main.c>
+        $<$<AND:$<BOOL:${TFM_PSA_API}>,$<STREQUAL:${CMAKE_SYSTEM_ARCHITECTURE},armv6-m>>:cmsis_psa/arch/tfm_arch_v6m_v7m.c>
+        $<$<AND:$<BOOL:${TFM_PSA_API}>,$<STREQUAL:${CMAKE_SYSTEM_ARCHITECTURE},armv7-m>>:cmsis_psa/arch/tfm_arch_v6m_v7m.c>
+)
+
+target_link_libraries(tfm_spm
+    PUBLIC
+        tfm_arch
+    PRIVATE
+        psa_interface
+        platform_s
+        tfm_boot_status
+        tfm_secure_api
+        tfm_partitions
+)
+
+target_compile_definitions(tfm_spm
+    PRIVATE
+        $<$<CONFIG:Debug>:TFM_CORE_DEBUG>
+        $<$<AND:$<BOOL:${BL2}>,$<BOOL:${MCUBOOT_MEASURED_BOOT}>>:BOOT_DATA_AVAILABLE>
+        $<$<BOOL:${TFM_INTERNAL_MCUBOOT}>:LEGACY_TFM_TLV_HEADER>
+)
+
+# With constant optimizations on tfm_nspc_func emits a symbol that the linker
+# doesn't like. It's unclear why this is, so I'll put a TODO here, but for the
+# moment this fixes it with mimimal impact.
+set_source_files_properties(tfm_nspm_func.c
+    PROPERTIES
+        COMPILE_FLAGS -fno-ipa-cp
+)
+
+# The veneers give warnings about not being properly declared so they get hidden
+# to not overshadow _real_ warnings.
+set_source_files_properties(tfm_secure_api.c
+    PROPERTIES
+        COMPILE_FLAGS -Wno-implicit-function-declaration
+)
+
+############################ TFM arch ##########################################
+
+target_include_directories(tfm_arch
+    INTERFACE
+        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/cmsis_psa/arch>
+)
+
+############################ Boot Status #######################################
+
+target_include_directories(tfm_boot_status
+    INTERFACE
+        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+)
+
+############################ TFM utilities #####################################
+
+target_include_directories(tfm_utilities
+    INTERFACE
+        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+)
+
+############################ Secure API ########################################
+
+target_link_libraries(tfm_secure_api
+    PRIVATE
+        tfm_partitions
+)
+
+target_include_directories(tfm_secure_api
+    PUBLIC
+        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+        $<$<BOOL:${TFM_PSA_API}>:${CMAKE_CURRENT_SOURCE_DIR}/model_ipc/include>
+        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/arch/include>
+)
+
+############################# Secure veneers ###################################
+
+if(NOT TFM_MULTI_CORE_TOPOLOGY)
+    # If this is added to the spm, it is discarded as it is not used. Since the
+    # spm is a static library it can't generate veneers under all compilers so
+    # instead this single file is added to the tfm_s target.
+    target_sources(tfm_s
+        PRIVATE
+            $<$<NOT:$<BOOL:${TFM_PSA_API}>>:${CMAKE_BINARY_DIR}/generated/secure_fw/spm/cmsis_func/tfm_veneers.c>
+            $<$<BOOL:${TFM_PSA_API}>:${CMAKE_CURRENT_SOURCE_DIR}/cmsis_psa/tfm_psa_api_veneers.c>
+    )
+endif()
diff --git a/secure_fw/spm/cmsis_func/CMakeLists.inc b/secure_fw/spm/cmsis_func/CMakeLists.inc
deleted file mode 100644
index 1fb4f39..0000000
--- a/secure_fw/spm/cmsis_func/CMakeLists.inc
+++ /dev/null
@@ -1,60 +0,0 @@
-#-------------------------------------------------------------------------------
-# Copyright (c) 2017-2020, Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-3-Clause
-#
-#-------------------------------------------------------------------------------
-
-#This file assumes it will be included from a project specific cmakefile.
-#
-#Inputs:
-#	TFM_ROOT_DIR - directory where secure FW sourec is located.
-#
-#Outputs:
-#	Will modify include directories to make the source compile.
-#	ALL_SRC_C: C source files to be compiled will be added to this list.
-#	  This shall be added to your add_executable or add_library command.
-#	ALL_SRC_CXX: C++ source files to be compiled will be added to this list.
-#	  This shall be added to your add_executable or add_library command.
-#	ALL_SRC_ASM: assembly source files to be compiled will be added to this
-#	  list. This shall be added to your add_executable or add_library
-#	  command.
-#	Include directories will be modified by using the include_directories()
-#	  commands as needed.
-
-if(NOT DEFINED TFM_ROOT_DIR)
-	message(FATAL_ERROR
-		"Please set TFM_ROOT_DIR before including this file.")
-endif()
-
-#Get the current directory where this file is located.
-set(SFW_FUNC_SPM_DIR ${CMAKE_CURRENT_LIST_DIR})
-set(SFW_SPM_DIR "${SFW_FUNC_SPM_DIR}/..")
-set(SFW_SPM_COMMON_DIR "${SFW_SPM_DIR}/common")
-
-set (SFW_FUNC_SPM_SRC
-		"${SFW_SPM_COMMON_DIR}/tfm_boot_data.c"
-		"${SFW_SPM_COMMON_DIR}/tfm_core_mem_check.c"
-		"${SFW_SPM_COMMON_DIR}/tfm_core_utils.c"
-		"${SFW_SPM_COMMON_DIR}/utilities.c"
-		"${SFW_FUNC_SPM_DIR}/main.c"
-		"${SFW_FUNC_SPM_DIR}/tfm_core_svcalls_func.c"
-		"${SFW_FUNC_SPM_DIR}/tfm_secure_api.c"
-		"${SFW_FUNC_SPM_DIR}/spm_func.c"
-		"${SFW_FUNC_SPM_DIR}/tfm_nspm_func.c"
-		"${SFW_FUNC_SPM_DIR}/tfm_veneers.c"
-		"${SFW_FUNC_SPM_DIR}/arch.c"
-	)
-
-#Append all our source files to global lists.
-list(APPEND ALL_SRC_C ${SFW_FUNC_SPM_SRC})
-unset(SFW_FUNC_SPM_SRC)
-
-#Setting include directories
-embedded_include_directories(PATH ${SFW_SPM_DIR} ABSOLUTE)
-embedded_include_directories(PATH ${SFW_FUNC_SPM_DIR} ABSOLUTE)
-embedded_include_directories(PATH ${SFW_FUNC_SPM_DIR}/include ABSOLUTE)
-embedded_include_directories(PATH ${TFM_ROOT_DIR}/interface/include ABSOLUTE)
-embedded_include_directories(PATH ${TFM_ROOT_DIR}/secure_fw/include ABSOLUTE)
-embedded_include_directories(PATH ${TFM_ROOT_DIR}/secure_fw/spm/include ABSOLUTE)
-embedded_include_directories(PATH ${TFM_ROOT_DIR}/bl2/include ABSOLUTE)
diff --git a/secure_fw/spm/cmsis_func/tfm_secure_irq_handlers.inc b/secure_fw/spm/cmsis_func/tfm_secure_irq_handlers.inc
deleted file mode 100644
index 78e113e..0000000
--- a/secure_fw/spm/cmsis_func/tfm_secure_irq_handlers.inc
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2018-2020, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-/*********** WARNING: This is an auto-generated file. Do not edit! ***********/
-
-#include "secure_fw/partitions/protected_storage/psa_manifest/tfm_protected_storage.h"
-#include "secure_fw/partitions/internal_trusted_storage/psa_manifest/tfm_internal_trusted_storage.h"
-#include "secure_fw/partitions/audit_logging/psa_manifest/tfm_audit_logging.h"
-#include "secure_fw/partitions/crypto/psa_manifest/tfm_crypto.h"
-#include "secure_fw/partitions/platform/psa_manifest/tfm_platform.h"
-#include "secure_fw/partitions/initial_attestation/psa_manifest/tfm_initial_attestation.h"
-#include "../tf-m-tests/test/test_services/tfm_core_test/psa_manifest/tfm_test_core.h"
-#include "../tf-m-tests/test/test_services/tfm_core_test_2/psa_manifest/tfm_test_core_2.h"
-#include "../tf-m-tests/test/test_services/tfm_secure_client_service/psa_manifest/tfm_test_client_service.h"
-#include "../tf-m-tests/test/test_services/tfm_ipc_service/psa_manifest/tfm_ipc_service_partition.h"
-#include "../tf-m-tests/test/test_services/tfm_ipc_client/psa_manifest/tfm_ipc_client_partition.h"
-#include "../tf-m-tests/test/test_services/tfm_irq_test_service_1/psa_manifest/tfm_irq_test_service_1.h"
-#include "../tf-m-tests/test/test_services/tfm_ps_test_service/psa_manifest/tfm_ps_test_service.h"
-#include "../tf-m-tests/test/test_services/tfm_secure_client_2/psa_manifest/tfm_secure_client_2.h"
-#include "psa_manifest/pid.h"
-
-/* Definitions of the signals of the IRQs */
-const struct tfm_core_irq_signal_data_t tfm_core_irq_signals[] = {
-#ifdef TFM_ENABLE_IRQ_TEST
-    { TFM_IRQ_TEST_1, SPM_CORE_IRQ_TEST_1_SIGNAL_TIMER_0_IRQ, TFM_TIMER0_IRQ, 64 },
-#endif /* TFM_ENABLE_IRQ_TEST */
-   {0, 0, (IRQn_Type) 0, 0}                         /* add dummy element to avoid non-standard empty array */
-};
-
-const size_t tfm_core_irq_signals_count = (sizeof(tfm_core_irq_signals) /
-                                           sizeof(*tfm_core_irq_signals)) - 1;  /* adjust for the dummy element */
-
-extern void priv_irq_handler_main(uint32_t partition_id,
-                                  uint32_t unpriv_handler,
-                                  uint32_t irq_signal,
-                                  uint32_t irq_line);
-
-/* Forward declarations of unpriv IRQ handlers*/
-#ifdef TFM_ENABLE_IRQ_TEST
-extern void SPM_CORE_IRQ_TEST_1_SIGNAL_TIMER_0_IRQ_isr(void);
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-
-/* Definitions of privileged IRQ handlers */
-#ifdef TFM_ENABLE_IRQ_TEST
-void TFM_TIMER0_IRQ_Handler(void)
-{
-    priv_irq_handler_main(TFM_IRQ_TEST_1,
-                          (uint32_t)SPM_CORE_IRQ_TEST_1_SIGNAL_TIMER_0_IRQ_isr,
-                          SPM_CORE_IRQ_TEST_1_SIGNAL_TIMER_0_IRQ,
-                          TFM_TIMER0_IRQ);
-}
-
-#endif /* TFM_ENABLE_IRQ_TEST */
-
diff --git a/secure_fw/spm/cmsis_func/tfm_spm_db_func.inc b/secure_fw/spm/cmsis_func/tfm_spm_db_func.inc
deleted file mode 100644
index 369ef41..0000000
--- a/secure_fw/spm/cmsis_func/tfm_spm_db_func.inc
+++ /dev/null
@@ -1,904 +0,0 @@
-/*
- * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-/*********** WARNING: This is an auto-generated file. Do not edit! ***********/
-
-#ifndef __TFM_SPM_DB_FUNC_INC__
-#define __TFM_SPM_DB_FUNC_INC__
-
-#include "psa_manifest/sid.h"
-
-/**************************************************************************/
-/** IRQ count per partition */
-/**************************************************************************/
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-#define TFM_PARTITION_TFM_SP_PS_IRQ_COUNT 0
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-#define TFM_PARTITION_TFM_SP_ITS_IRQ_COUNT 0
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-#define TFM_PARTITION_TFM_SP_AUDIT_LOG_IRQ_COUNT 0
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-#define TFM_PARTITION_TFM_SP_CRYPTO_IRQ_COUNT 0
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-#define TFM_PARTITION_TFM_SP_PLATFORM_IRQ_COUNT 0
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-#define TFM_PARTITION_TFM_SP_INITIAL_ATTESTATION_IRQ_COUNT 0
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-#define TFM_PARTITION_TFM_SP_CORE_TEST_IRQ_COUNT 0
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-#define TFM_PARTITION_TFM_SP_CORE_TEST_2_IRQ_COUNT 0
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-#define TFM_PARTITION_TFM_SP_SECURE_TEST_PARTITION_IRQ_COUNT 0
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-#define TFM_PARTITION_TFM_SP_IPC_SERVICE_TEST_IRQ_COUNT 0
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-#define TFM_PARTITION_TFM_SP_IPC_CLIENT_TEST_IRQ_COUNT 0
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-#define TFM_PARTITION_TFM_IRQ_TEST_1_IRQ_COUNT 1
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-#define TFM_PARTITION_TFM_SP_PS_TEST_IRQ_COUNT 0
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-#define TFM_PARTITION_TFM_SP_SECURE_CLIENT_2_IRQ_COUNT 0
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-/**************************************************************************/
-/** Declarations of partition init functions */
-/**************************************************************************/
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-extern void tfm_ps_req_mngr_init(void);
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-extern void tfm_its_req_mngr_init(void);
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-extern void audit_core_init(void);
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-extern void tfm_crypto_init(void);
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-extern void platform_sp_init(void);
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-extern void attest_partition_init(void);
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-extern void core_test_init(void);
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-extern void core_test_2_init(void);
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-extern void tfm_secure_client_service_init(void);
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-extern void ipc_service_test_main(void);
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-extern void ipc_client_test_main(void);
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-extern void tfm_irq_test_1_init(void);
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-extern void tfm_ps_test_init(void);
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-extern void tfm_secure_client_2_init(void);
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-/**************************************************************************/
-/** Context stacks for IRQ handling */
-/**************************************************************************/
-/* The max size of the context stack can be calculated as a function of the IRQ
- * count of the secure partition:
- *
- * max_stack_size = intr_ctx_size + (IRQ_CNT * (intr_ctx_size + hndl_ctx_size))
- *
- * where:
- *   intr_ctx: Frame pushed when the partition is interrupted
- *   hndl_ctx: Frame pushed when the partition is handling an interrupt
- */
-static uint32_t ns_interrupt_ctx_stack[
-        sizeof(struct interrupted_ctx_stack_frame_t) / sizeof(uint32_t)];
-
-static uint32_t tfm_core_interrupt_ctx_stack[
-        sizeof(struct interrupted_ctx_stack_frame_t) / sizeof(uint32_t)];
-
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-static uint32_t ctx_stack_TFM_SP_PS[
-        (sizeof(struct interrupted_ctx_stack_frame_t) +
-            (TFM_PARTITION_TFM_SP_PS_IRQ_COUNT) * (
-                sizeof(struct interrupted_ctx_stack_frame_t) +
-                sizeof(struct handler_ctx_stack_frame_t)
-        )) / sizeof(uint32_t)];
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-static uint32_t ctx_stack_TFM_SP_ITS[
-        (sizeof(struct interrupted_ctx_stack_frame_t) +
-            (TFM_PARTITION_TFM_SP_ITS_IRQ_COUNT) * (
-                sizeof(struct interrupted_ctx_stack_frame_t) +
-                sizeof(struct handler_ctx_stack_frame_t)
-        )) / sizeof(uint32_t)];
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-static uint32_t ctx_stack_TFM_SP_AUDIT_LOG[
-        (sizeof(struct interrupted_ctx_stack_frame_t) +
-            (TFM_PARTITION_TFM_SP_AUDIT_LOG_IRQ_COUNT) * (
-                sizeof(struct interrupted_ctx_stack_frame_t) +
-                sizeof(struct handler_ctx_stack_frame_t)
-        )) / sizeof(uint32_t)];
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-static uint32_t ctx_stack_TFM_SP_CRYPTO[
-        (sizeof(struct interrupted_ctx_stack_frame_t) +
-            (TFM_PARTITION_TFM_SP_CRYPTO_IRQ_COUNT) * (
-                sizeof(struct interrupted_ctx_stack_frame_t) +
-                sizeof(struct handler_ctx_stack_frame_t)
-        )) / sizeof(uint32_t)];
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-static uint32_t ctx_stack_TFM_SP_PLATFORM[
-        (sizeof(struct interrupted_ctx_stack_frame_t) +
-            (TFM_PARTITION_TFM_SP_PLATFORM_IRQ_COUNT) * (
-                sizeof(struct interrupted_ctx_stack_frame_t) +
-                sizeof(struct handler_ctx_stack_frame_t)
-        )) / sizeof(uint32_t)];
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-static uint32_t ctx_stack_TFM_SP_INITIAL_ATTESTATION[
-        (sizeof(struct interrupted_ctx_stack_frame_t) +
-            (TFM_PARTITION_TFM_SP_INITIAL_ATTESTATION_IRQ_COUNT) * (
-                sizeof(struct interrupted_ctx_stack_frame_t) +
-                sizeof(struct handler_ctx_stack_frame_t)
-        )) / sizeof(uint32_t)];
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-static uint32_t ctx_stack_TFM_SP_CORE_TEST[
-        (sizeof(struct interrupted_ctx_stack_frame_t) +
-            (TFM_PARTITION_TFM_SP_CORE_TEST_IRQ_COUNT) * (
-                sizeof(struct interrupted_ctx_stack_frame_t) +
-                sizeof(struct handler_ctx_stack_frame_t)
-        )) / sizeof(uint32_t)];
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-static uint32_t ctx_stack_TFM_SP_CORE_TEST_2[
-        (sizeof(struct interrupted_ctx_stack_frame_t) +
-            (TFM_PARTITION_TFM_SP_CORE_TEST_2_IRQ_COUNT) * (
-                sizeof(struct interrupted_ctx_stack_frame_t) +
-                sizeof(struct handler_ctx_stack_frame_t)
-        )) / sizeof(uint32_t)];
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-static uint32_t ctx_stack_TFM_SP_SECURE_TEST_PARTITION[
-        (sizeof(struct interrupted_ctx_stack_frame_t) +
-            (TFM_PARTITION_TFM_SP_SECURE_TEST_PARTITION_IRQ_COUNT) * (
-                sizeof(struct interrupted_ctx_stack_frame_t) +
-                sizeof(struct handler_ctx_stack_frame_t)
-        )) / sizeof(uint32_t)];
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-static uint32_t ctx_stack_TFM_SP_IPC_SERVICE_TEST[
-        (sizeof(struct interrupted_ctx_stack_frame_t) +
-            (TFM_PARTITION_TFM_SP_IPC_SERVICE_TEST_IRQ_COUNT) * (
-                sizeof(struct interrupted_ctx_stack_frame_t) +
-                sizeof(struct handler_ctx_stack_frame_t)
-        )) / sizeof(uint32_t)];
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-static uint32_t ctx_stack_TFM_SP_IPC_CLIENT_TEST[
-        (sizeof(struct interrupted_ctx_stack_frame_t) +
-            (TFM_PARTITION_TFM_SP_IPC_CLIENT_TEST_IRQ_COUNT) * (
-                sizeof(struct interrupted_ctx_stack_frame_t) +
-                sizeof(struct handler_ctx_stack_frame_t)
-        )) / sizeof(uint32_t)];
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-static uint32_t ctx_stack_TFM_IRQ_TEST_1[
-        (sizeof(struct interrupted_ctx_stack_frame_t) +
-            (TFM_PARTITION_TFM_IRQ_TEST_1_IRQ_COUNT) * (
-                sizeof(struct interrupted_ctx_stack_frame_t) +
-                sizeof(struct handler_ctx_stack_frame_t)
-        )) / sizeof(uint32_t)];
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-static uint32_t ctx_stack_TFM_SP_PS_TEST[
-        (sizeof(struct interrupted_ctx_stack_frame_t) +
-            (TFM_PARTITION_TFM_SP_PS_TEST_IRQ_COUNT) * (
-                sizeof(struct interrupted_ctx_stack_frame_t) +
-                sizeof(struct handler_ctx_stack_frame_t)
-        )) / sizeof(uint32_t)];
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-static uint32_t ctx_stack_TFM_SP_SECURE_CLIENT_2[
-        (sizeof(struct interrupted_ctx_stack_frame_t) +
-            (TFM_PARTITION_TFM_SP_SECURE_CLIENT_2_IRQ_COUNT) * (
-                sizeof(struct interrupted_ctx_stack_frame_t) +
-                sizeof(struct handler_ctx_stack_frame_t)
-        )) / sizeof(uint32_t)];
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-uint32_t *ctx_stack_list[] =
-{
-    ns_interrupt_ctx_stack,
-    tfm_core_interrupt_ctx_stack,
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-    ctx_stack_TFM_SP_PS,
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-    ctx_stack_TFM_SP_ITS,
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-#ifdef TFM_PARTITION_AUDIT_LOG
-    ctx_stack_TFM_SP_AUDIT_LOG,
-#endif /* TFM_PARTITION_AUDIT_LOG */
-#ifdef TFM_PARTITION_CRYPTO
-    ctx_stack_TFM_SP_CRYPTO,
-#endif /* TFM_PARTITION_CRYPTO */
-#ifdef TFM_PARTITION_PLATFORM
-    ctx_stack_TFM_SP_PLATFORM,
-#endif /* TFM_PARTITION_PLATFORM */
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-    ctx_stack_TFM_SP_INITIAL_ATTESTATION,
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-#ifdef TFM_PARTITION_TEST_CORE
-    ctx_stack_TFM_SP_CORE_TEST,
-#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_CORE
-    ctx_stack_TFM_SP_CORE_TEST_2,
-#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    ctx_stack_TFM_SP_SECURE_TEST_PARTITION,
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    ctx_stack_TFM_SP_IPC_SERVICE_TEST,
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    ctx_stack_TFM_SP_IPC_CLIENT_TEST,
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-#ifdef TFM_ENABLE_IRQ_TEST
-    ctx_stack_TFM_IRQ_TEST_1,
-#endif /* TFM_ENABLE_IRQ_TEST */
-#ifdef TFM_PARTITION_TEST_PS
-    ctx_stack_TFM_SP_PS_TEST,
-#endif /* TFM_PARTITION_TEST_PS */
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    ctx_stack_TFM_SP_SECURE_CLIENT_2,
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-};
-
-/**************************************************************************/
-/** Dependencies array for Secure Partition */
-/**************************************************************************/
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-static int32_t dependencies_TFM_SP_PS[] =
-{
-    TFM_CRYPTO_SID,
-    TFM_ITS_SET_SID,
-    TFM_ITS_GET_SID,
-    TFM_ITS_GET_INFO_SID,
-    TFM_ITS_REMOVE_SID,
-    TFM_SP_PLATFORM_NV_COUNTER_SID,
-};
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_CRYPTO
-static int32_t dependencies_TFM_SP_CRYPTO[] =
-{
-    TFM_ITS_SET_SID,
-    TFM_ITS_GET_SID,
-    TFM_ITS_GET_INFO_SID,
-    TFM_ITS_REMOVE_SID,
-};
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-static int32_t dependencies_TFM_SP_INITIAL_ATTESTATION[] =
-{
-    TFM_CRYPTO_SID,
-};
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-static int32_t dependencies_TFM_SP_CORE_TEST[] =
-{
-    SPM_CORE_TEST_2_INVERT_SID,
-    SPM_CORE_TEST_2_GET_EVERY_SECOND_BYTE_SID,
-    SPM_CORE_TEST_2_SLAVE_SERVICE_SID,
-};
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-static int32_t dependencies_TFM_SP_SECURE_TEST_PARTITION[] =
-{
-    TFM_SECURE_CLIENT_2_SID,
-    TFM_CRYPTO_SID,
-    TFM_PS_SET_SID,
-    TFM_PS_GET_SID,
-    TFM_PS_GET_INFO_SID,
-    TFM_PS_REMOVE_SID,
-    TFM_PS_GET_SUPPORT_SID,
-    TFM_ITS_SET_SID,
-    TFM_ITS_GET_SID,
-    TFM_ITS_GET_INFO_SID,
-    TFM_ITS_REMOVE_SID,
-    TFM_ATTEST_GET_TOKEN_SID,
-    TFM_ATTEST_GET_TOKEN_SIZE_SID,
-    TFM_ATTEST_GET_PUBLIC_KEY_SID,
-    TFM_PS_TEST_PREPARE_SID,
-    TFM_SP_PLATFORM_SYSTEM_RESET_SID,
-    TFM_SP_PLATFORM_IOCTL_SID,
-};
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-static int32_t dependencies_TFM_SP_IPC_CLIENT_TEST[] =
-{
-    IPC_SERVICE_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SID,
-    IPC_SERVICE_TEST_PSA_ACCESS_APP_MEM_SID,
-    IPC_SERVICE_TEST_BASIC_SID,
-    IPC_SERVICE_TEST_APP_ACCESS_PSA_MEM_SID,
-};
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_PS
-static int32_t dependencies_TFM_SP_PS_TEST[] =
-{
-    TFM_CRYPTO_SID,
-    TFM_ITS_GET_SID,
-    TFM_ITS_REMOVE_SID,
-};
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-static int32_t dependencies_TFM_SP_SECURE_CLIENT_2[] =
-{
-    TFM_ITS_GET_SID,
-    TFM_CRYPTO_SID,
-};
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-/**************************************************************************/
-/** The static data of the partition list */
-/**************************************************************************/
-const struct spm_partition_static_data_t static_data_list[] =
-{
-    {
-        .partition_id         = TFM_SP_NON_SECURE_ID,
-        .partition_flags      = 0,
-    },
-
-    {
-        .partition_id         = TFM_SP_CORE_ID,
-        .partition_flags      = SPM_PART_FLAG_APP_ROT | SPM_PART_FLAG_PSA_ROT,
-    },
-
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-    {
-        .partition_id         = TFM_SP_PS,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = tfm_ps_req_mngr_init,
-        .dependencies_num     = 6,
-        .p_dependencies       = dependencies_TFM_SP_PS,
-    },
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-    {
-        .partition_id         = TFM_SP_ITS,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = tfm_its_req_mngr_init,
-        .dependencies_num     = 0,
-        .p_dependencies       = NULL,
-    },
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-    {
-        .partition_id         = TFM_SP_AUDIT_LOG,
-        .partition_flags      = 0
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = audit_core_init,
-        .dependencies_num     = 0,
-        .p_dependencies       = NULL,
-    },
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-    {
-        .partition_id         = TFM_SP_CRYPTO,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = tfm_crypto_init,
-        .dependencies_num     = 4,
-        .p_dependencies       = dependencies_TFM_SP_CRYPTO,
-    },
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-    {
-        .partition_id         = TFM_SP_PLATFORM,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = platform_sp_init,
-        .dependencies_num     = 0,
-        .p_dependencies       = NULL,
-    },
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-    {
-        .partition_id         = TFM_SP_INITIAL_ATTESTATION,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = attest_partition_init,
-        .dependencies_num     = 1,
-        .p_dependencies       = dependencies_TFM_SP_INITIAL_ATTESTATION,
-    },
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-    {
-        .partition_id         = TFM_SP_CORE_TEST,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = core_test_init,
-        .dependencies_num     = 3,
-        .p_dependencies       = dependencies_TFM_SP_CORE_TEST,
-    },
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-    {
-        .partition_id         = TFM_SP_CORE_TEST_2,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = core_test_2_init,
-        .dependencies_num     = 0,
-        .p_dependencies       = NULL,
-    },
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    {
-        .partition_id         = TFM_SP_SECURE_TEST_PARTITION,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = tfm_secure_client_service_init,
-        .dependencies_num     = 17,
-        .p_dependencies       = dependencies_TFM_SP_SECURE_TEST_PARTITION,
-    },
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    {
-        .partition_id         = TFM_SP_IPC_SERVICE_TEST,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(HIGH),
-        .partition_init       = ipc_service_test_main,
-        .dependencies_num     = 0,
-        .p_dependencies       = NULL,
-    },
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    {
-        .partition_id         = TFM_SP_IPC_CLIENT_TEST,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = ipc_client_test_main,
-        .dependencies_num     = 4,
-        .p_dependencies       = dependencies_TFM_SP_IPC_CLIENT_TEST,
-    },
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-    {
-        .partition_id         = TFM_IRQ_TEST_1,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = tfm_irq_test_1_init,
-        .dependencies_num     = 0,
-        .p_dependencies       = NULL,
-    },
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-    {
-        .partition_id         = TFM_SP_PS_TEST,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = tfm_ps_test_init,
-        .dependencies_num     = 3,
-        .p_dependencies       = dependencies_TFM_SP_PS_TEST,
-    },
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    {
-        .partition_id         = TFM_SP_SECURE_CLIENT_2,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = tfm_secure_client_2_init,
-        .dependencies_num     = 2,
-        .p_dependencies       = dependencies_TFM_SP_SECURE_CLIENT_2,
-    },
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-};
-
-/**************************************************************************/
-/** The platform data of the partition list */
-/**************************************************************************/
-#ifdef TFM_PARTITION_AUDIT_LOG
-const struct tfm_spm_partition_platform_data_t *
-    platform_data_list_TFM_SP_AUDIT_LOG[] =
-{
-#ifdef AUDIT_UART_REDIRECTION
-    TFM_PERIPHERAL_UART1,
-#endif /* AUDIT_UART_REDIRECTION */
-    NULL
-};
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_TEST_CORE
-const struct tfm_spm_partition_platform_data_t *
-    platform_data_list_TFM_SP_CORE_TEST[] =
-{
-    TFM_PERIPHERAL_FPGA_IO,
-    NULL
-};
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-const struct tfm_spm_partition_platform_data_t *
-    platform_data_list_TFM_SP_SECURE_TEST_PARTITION[] =
-{
-    TFM_PERIPHERAL_STD_UART,
-    NULL
-};
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-const struct tfm_spm_partition_platform_data_t *
-    platform_data_list_TFM_IRQ_TEST_1[] =
-{
-    TFM_PERIPHERAL_TIMER0,
-    NULL
-};
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-const struct tfm_spm_partition_platform_data_t **platform_data_list_list[] =
-{
-    NULL,
-    NULL,
-
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-    NULL,
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-    NULL,
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-    platform_data_list_TFM_SP_AUDIT_LOG,
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-    NULL,
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-    NULL,
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-    NULL,
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-    platform_data_list_TFM_SP_CORE_TEST,
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-    NULL,
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    platform_data_list_TFM_SP_SECURE_TEST_PARTITION,
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    NULL,
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    NULL,
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-    platform_data_list_TFM_IRQ_TEST_1,
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-    NULL,
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    NULL,
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-};
-
-/**************************************************************************/
-/** The partition list for the DB */
-/**************************************************************************/
-static struct spm_partition_desc_t partition_list [] =
-{
-    {{0}}, /* placeholder for Non-secure internal partition */
-    {{0}},   /* placeholder for TF-M Core internal partition */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_PS */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-    {
-    /* Runtime data */
-        .runtime_data             = {0},
-        .static_data              = NULL,
-        .platform_data_list       = NULL,
-    },
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_ITS */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-    {
-    /* Runtime data */
-        .runtime_data             = {0},
-        .static_data              = NULL,
-        .platform_data_list       = NULL,
-    },
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_AUDIT_LOG */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_AUDIT_LOG
-    {
-    /* Runtime data */
-        .runtime_data             = {0},
-        .static_data              = NULL,
-        .platform_data_list       = NULL,
-    },
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_CRYPTO */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_CRYPTO
-    {
-    /* Runtime data */
-        .runtime_data             = {0},
-        .static_data              = NULL,
-        .platform_data_list       = NULL,
-    },
-#endif /* TFM_PARTITION_CRYPTO */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_PLATFORM */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_PLATFORM
-    {
-    /* Runtime data */
-        .runtime_data             = {0},
-        .static_data              = NULL,
-        .platform_data_list       = NULL,
-    },
-#endif /* TFM_PARTITION_PLATFORM */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_INITIAL_ATTESTATION */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-    {
-    /* Runtime data */
-        .runtime_data             = {0},
-        .static_data              = NULL,
-        .platform_data_list       = NULL,
-    },
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_CORE_TEST */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_TEST_CORE
-    {
-    /* Runtime data */
-        .runtime_data             = {0},
-        .static_data              = NULL,
-        .platform_data_list       = NULL,
-    },
-#endif /* TFM_PARTITION_TEST_CORE */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_CORE_TEST_2 */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_TEST_CORE
-    {
-    /* Runtime data */
-        .runtime_data             = {0},
-        .static_data              = NULL,
-        .platform_data_list       = NULL,
-    },
-#endif /* TFM_PARTITION_TEST_CORE */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_SECURE_TEST_PARTITION */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    {
-    /* Runtime data */
-        .runtime_data             = {0},
-        .static_data              = NULL,
-        .platform_data_list       = NULL,
-    },
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_IPC_SERVICE_TEST */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    {
-    /* Runtime data */
-        .runtime_data             = {0},
-        .static_data              = NULL,
-        .platform_data_list       = NULL,
-    },
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_IPC_CLIENT_TEST */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    {
-    /* Runtime data */
-        .runtime_data             = {0},
-        .static_data              = NULL,
-        .platform_data_list       = NULL,
-    },
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_IRQ_TEST_1 */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_ENABLE_IRQ_TEST
-    {
-    /* Runtime data */
-        .runtime_data             = {0},
-        .static_data              = NULL,
-        .platform_data_list       = NULL,
-    },
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_PS_TEST */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_TEST_PS
-    {
-    /* Runtime data */
-        .runtime_data             = {0},
-        .static_data              = NULL,
-        .platform_data_list       = NULL,
-    },
-#endif /* TFM_PARTITION_TEST_PS */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_SECURE_CLIENT_2 */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    {
-    /* Runtime data */
-        .runtime_data             = {0},
-        .static_data              = NULL,
-        .platform_data_list       = NULL,
-    },
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-};
-
-struct spm_partition_db_t g_spm_partition_db = {
-    .is_init = 0,
-    .partition_count = sizeof(partition_list) / sizeof(partition_list[0]),
-    .running_partition_idx = 0,
-    .partitions = partition_list,
-};
-
-#endif /* __TFM_SPM_DB_FUNC_INC__ */
diff --git a/secure_fw/spm/cmsis_func/tfm_veneers.c b/secure_fw/spm/cmsis_func/tfm_veneers.c
deleted file mode 100644
index 315f752..0000000
--- a/secure_fw/spm/cmsis_func/tfm_veneers.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * Copyright (c) 2018-2020, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-/*********** WARNING: This is an auto-generated file. Do not edit! ***********/
-
-#include "tfm_secure_api.h"
-#include "spm_partition_defs.h"
-
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-/******** TFM_SP_PS ********/
-psa_status_t tfm_ps_set_req(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_ps_get_req(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_ps_get_info_req(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_ps_remove_req(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_ps_get_support_req(psa_invec *, size_t, psa_outvec *, size_t);
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-/******** TFM_SP_ITS ********/
-psa_status_t tfm_its_set_req(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_its_get_req(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_its_get_info_req(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_its_remove_req(psa_invec *, size_t, psa_outvec *, size_t);
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-/******** TFM_SP_AUDIT_LOG ********/
-psa_status_t audit_core_retrieve_record(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t audit_core_add_record(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t audit_core_get_info(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t audit_core_get_record_info(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t audit_core_delete_record(psa_invec *, size_t, psa_outvec *, size_t);
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-/******** TFM_SP_CRYPTO ********/
-psa_status_t tfm_crypto_get_key_attributes(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_open_key(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_close_key(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_reset_key_attributes(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_import_key(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_destroy_key(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_export_key(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_export_public_key(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_copy_key(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_hash_compute(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_hash_compare(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_hash_setup(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_hash_update(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_hash_finish(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_hash_verify(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_hash_abort(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_hash_clone(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_mac_compute(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_mac_verify(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_mac_sign_setup(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_mac_verify_setup(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_mac_update(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_mac_sign_finish(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_mac_verify_finish(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_mac_abort(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_cipher_encrypt(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_cipher_decrypt(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_cipher_encrypt_setup(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_cipher_decrypt_setup(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_cipher_generate_iv(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_cipher_set_iv(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_cipher_update(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_cipher_finish(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_cipher_abort(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_aead_encrypt(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_aead_decrypt(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_aead_encrypt_setup(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_aead_decrypt_setup(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_aead_generate_nonce(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_aead_set_nonce(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_aead_set_lengths(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_aead_update_ad(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_aead_update(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_aead_finish(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_aead_verify(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_aead_abort(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_sign_hash(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_verify_hash(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_asymmetric_encrypt(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_asymmetric_decrypt(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_key_derivation_setup(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_key_derivation_get_capacity(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_key_derivation_set_capacity(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_key_derivation_input_bytes(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_key_derivation_input_key(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_key_derivation_key_agreement(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_key_derivation_output_bytes(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_key_derivation_output_key(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_key_derivation_abort(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_raw_key_agreement(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_generate_random(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t tfm_crypto_generate_key(psa_invec *, size_t, psa_outvec *, size_t);
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-/******** TFM_SP_PLATFORM ********/
-psa_status_t platform_sp_system_reset(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t platform_sp_ioctl(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t platform_sp_nv_counter_read(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t platform_sp_nv_counter_increment(psa_invec *, size_t, psa_outvec *, size_t);
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-/******** TFM_SP_INITIAL_ATTESTATION ********/
-psa_status_t initial_attest_get_token(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t initial_attest_get_token_size(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t initial_attest_get_public_key(psa_invec *, size_t, psa_outvec *, size_t);
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-/******** TFM_SP_CORE_TEST ********/
-psa_status_t spm_core_test_sfn(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t spm_core_test_sfn_init_success(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t spm_core_test_sfn_direct_recursion(psa_invec *, size_t, psa_outvec *, size_t);
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-/******** TFM_SP_CORE_TEST_2 ********/
-psa_status_t spm_core_test_2_slave_service(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t spm_core_test_2_sfn_invert(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t spm_core_test_2_check_caller_client_id(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t spm_core_test_2_get_every_second_byte(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t spm_core_test_2_prepare_test_scenario(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t spm_core_test_2_execute_test_scenario(psa_invec *, size_t, psa_outvec *, size_t);
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-/******** TFM_SP_SECURE_TEST_PARTITION ********/
-psa_status_t tfm_secure_client_service_sfn_run_tests(psa_invec *, size_t, psa_outvec *, size_t);
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-/******** TFM_SP_IPC_SERVICE_TEST ********/
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-/******** TFM_SP_IPC_CLIENT_TEST ********/
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-/******** TFM_IRQ_TEST_1 ********/
-psa_status_t spm_irq_test_1_prepare_test_scenario(psa_invec *, size_t, psa_outvec *, size_t);
-psa_status_t spm_irq_test_1_execute_test_scenario(psa_invec *, size_t, psa_outvec *, size_t);
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-/******** TFM_SP_PS_TEST ********/
-psa_status_t tfm_ps_test_prepare(psa_invec *, size_t, psa_outvec *, size_t);
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-/******** TFM_SP_SECURE_CLIENT_2 ********/
-psa_status_t tfm_secure_client_2_call(psa_invec *, size_t, psa_outvec *, size_t);
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-
-#define TFM_VENEER_FUNCTION(partition_name, sfn_name) \
-    __tfm_secure_gateway_attributes__ \
-    psa_status_t tfm_##sfn_name##_veneer(psa_invec *in_vec, \
-                                         size_t in_len, \
-                                         psa_outvec *out_vec, \
-                                         size_t out_len) \
-    { \
-        bool is_ns = tfm_core_is_ns_client(); \
-      \
-        TFM_CORE_IOVEC_SFN_REQUEST(partition_name, \
-                                   is_ns, \
-                                   (void *) sfn_name, \
-                                   in_vec, in_len, out_vec, out_len); \
-    }
-
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-/******** TFM_SP_PS ********/
-TFM_VENEER_FUNCTION(TFM_SP_PS, tfm_ps_set_req)
-TFM_VENEER_FUNCTION(TFM_SP_PS, tfm_ps_get_req)
-TFM_VENEER_FUNCTION(TFM_SP_PS, tfm_ps_get_info_req)
-TFM_VENEER_FUNCTION(TFM_SP_PS, tfm_ps_remove_req)
-TFM_VENEER_FUNCTION(TFM_SP_PS, tfm_ps_get_support_req)
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-/******** TFM_SP_ITS ********/
-TFM_VENEER_FUNCTION(TFM_SP_ITS, tfm_its_set_req)
-TFM_VENEER_FUNCTION(TFM_SP_ITS, tfm_its_get_req)
-TFM_VENEER_FUNCTION(TFM_SP_ITS, tfm_its_get_info_req)
-TFM_VENEER_FUNCTION(TFM_SP_ITS, tfm_its_remove_req)
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-/******** TFM_SP_AUDIT_LOG ********/
-TFM_VENEER_FUNCTION(TFM_SP_AUDIT_LOG, audit_core_retrieve_record)
-TFM_VENEER_FUNCTION(TFM_SP_AUDIT_LOG, audit_core_add_record)
-TFM_VENEER_FUNCTION(TFM_SP_AUDIT_LOG, audit_core_get_info)
-TFM_VENEER_FUNCTION(TFM_SP_AUDIT_LOG, audit_core_get_record_info)
-TFM_VENEER_FUNCTION(TFM_SP_AUDIT_LOG, audit_core_delete_record)
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-/******** TFM_SP_CRYPTO ********/
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_get_key_attributes)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_open_key)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_close_key)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_reset_key_attributes)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_import_key)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_destroy_key)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_export_key)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_export_public_key)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_copy_key)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_hash_compute)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_hash_compare)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_hash_setup)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_hash_update)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_hash_finish)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_hash_verify)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_hash_abort)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_hash_clone)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_mac_compute)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_mac_verify)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_mac_sign_setup)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_mac_verify_setup)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_mac_update)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_mac_sign_finish)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_mac_verify_finish)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_mac_abort)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_cipher_encrypt)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_cipher_decrypt)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_cipher_encrypt_setup)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_cipher_decrypt_setup)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_cipher_generate_iv)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_cipher_set_iv)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_cipher_update)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_cipher_finish)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_cipher_abort)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_aead_encrypt)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_aead_decrypt)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_aead_encrypt_setup)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_aead_decrypt_setup)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_aead_generate_nonce)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_aead_set_nonce)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_aead_set_lengths)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_aead_update_ad)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_aead_update)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_aead_finish)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_aead_verify)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_aead_abort)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_sign_hash)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_verify_hash)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_asymmetric_encrypt)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_asymmetric_decrypt)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_key_derivation_setup)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_key_derivation_get_capacity)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_key_derivation_set_capacity)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_key_derivation_input_bytes)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_key_derivation_input_key)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_key_derivation_key_agreement)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_key_derivation_output_bytes)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_key_derivation_output_key)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_key_derivation_abort)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_raw_key_agreement)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_generate_random)
-TFM_VENEER_FUNCTION(TFM_SP_CRYPTO, tfm_crypto_generate_key)
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-/******** TFM_SP_PLATFORM ********/
-TFM_VENEER_FUNCTION(TFM_SP_PLATFORM, platform_sp_system_reset)
-TFM_VENEER_FUNCTION(TFM_SP_PLATFORM, platform_sp_ioctl)
-TFM_VENEER_FUNCTION(TFM_SP_PLATFORM, platform_sp_nv_counter_read)
-TFM_VENEER_FUNCTION(TFM_SP_PLATFORM, platform_sp_nv_counter_increment)
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-/******** TFM_SP_INITIAL_ATTESTATION ********/
-TFM_VENEER_FUNCTION(TFM_SP_INITIAL_ATTESTATION, initial_attest_get_token)
-TFM_VENEER_FUNCTION(TFM_SP_INITIAL_ATTESTATION, initial_attest_get_token_size)
-TFM_VENEER_FUNCTION(TFM_SP_INITIAL_ATTESTATION, initial_attest_get_public_key)
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-/******** TFM_SP_CORE_TEST ********/
-TFM_VENEER_FUNCTION(TFM_SP_CORE_TEST, spm_core_test_sfn)
-TFM_VENEER_FUNCTION(TFM_SP_CORE_TEST, spm_core_test_sfn_init_success)
-TFM_VENEER_FUNCTION(TFM_SP_CORE_TEST, spm_core_test_sfn_direct_recursion)
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-/******** TFM_SP_CORE_TEST_2 ********/
-TFM_VENEER_FUNCTION(TFM_SP_CORE_TEST_2, spm_core_test_2_slave_service)
-TFM_VENEER_FUNCTION(TFM_SP_CORE_TEST_2, spm_core_test_2_sfn_invert)
-TFM_VENEER_FUNCTION(TFM_SP_CORE_TEST_2, spm_core_test_2_check_caller_client_id)
-TFM_VENEER_FUNCTION(TFM_SP_CORE_TEST_2, spm_core_test_2_get_every_second_byte)
-TFM_VENEER_FUNCTION(TFM_SP_CORE_TEST_2, spm_core_test_2_prepare_test_scenario)
-TFM_VENEER_FUNCTION(TFM_SP_CORE_TEST_2, spm_core_test_2_execute_test_scenario)
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-/******** TFM_SP_SECURE_TEST_PARTITION ********/
-TFM_VENEER_FUNCTION(TFM_SP_SECURE_TEST_PARTITION, tfm_secure_client_service_sfn_run_tests)
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-/******** TFM_SP_IPC_SERVICE_TEST ********/
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-/******** TFM_SP_IPC_CLIENT_TEST ********/
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-/******** TFM_IRQ_TEST_1 ********/
-TFM_VENEER_FUNCTION(TFM_IRQ_TEST_1, spm_irq_test_1_prepare_test_scenario)
-TFM_VENEER_FUNCTION(TFM_IRQ_TEST_1, spm_irq_test_1_execute_test_scenario)
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-/******** TFM_SP_PS_TEST ********/
-TFM_VENEER_FUNCTION(TFM_SP_PS_TEST, tfm_ps_test_prepare)
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-/******** TFM_SP_SECURE_CLIENT_2 ********/
-TFM_VENEER_FUNCTION(TFM_SP_SECURE_CLIENT_2, tfm_secure_client_2_call)
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
diff --git a/secure_fw/spm/cmsis_psa/CMakeLists.inc b/secure_fw/spm/cmsis_psa/CMakeLists.inc
deleted file mode 100644
index 0756062..0000000
--- a/secure_fw/spm/cmsis_psa/CMakeLists.inc
+++ /dev/null
@@ -1,77 +0,0 @@
-#-------------------------------------------------------------------------------
-# Copyright (c) 2017-2020, Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-3-Clause
-#
-#-------------------------------------------------------------------------------
-
-#This file assumes it will be included from a project specific cmakefile.
-#
-#Inputs:
-#	TFM_ROOT_DIR - directory where secure FW sourec is located.
-#
-#Outputs:
-#	Will modify include directories to make the source compile.
-#	ALL_SRC_C: C source files to be compiled will be added to this list.
-#	  This shall be added to your add_executable or add_library command.
-#	ALL_SRC_CXX: C++ source files to be compiled will be added to this list.
-#	  This shall be added to your add_executable or add_library command.
-#	ALL_SRC_ASM: assembly source files to be compiled will be added to this
-#	  list. This shall be added to your add_executable or add_library
-#	  command.
-#	Include directories will be modified by using the include_directories()
-#	  commands as needed.
-
-if(NOT DEFINED TFM_ROOT_DIR)
-	message(FATAL_ERROR
-		"Please set TFM_ROOT_DIR before including this file.")
-endif()
-
-#Get the current directory where this file is located.
-set(SFW_IPC_SPM_DIR ${CMAKE_CURRENT_LIST_DIR})
-set(SFW_SPM_DIR "${SFW_IPC_SPM_DIR}/..")
-set(SFW_SPM_ARCH_DIR "${SFW_IPC_SPM_DIR}/arch")
-set(SFW_SPM_COMMON_DIR "${SFW_SPM_DIR}/common")
-
-set (SFW_IPC_SPM_SRC
-		"${SFW_SPM_COMMON_DIR}/psa_client_service_apis.c"
-		"${SFW_SPM_COMMON_DIR}/spm_psa_client_call.c"
-		"${SFW_SPM_COMMON_DIR}/tfm_boot_data.c"
-		"${SFW_SPM_COMMON_DIR}/tfm_core_utils.c"
-		"${SFW_SPM_COMMON_DIR}/utilities.c"
-		"${SFW_IPC_SPM_DIR}/main.c"
-		"${SFW_IPC_SPM_DIR}/spm_ipc.c"
-		"${SFW_IPC_SPM_DIR}/tfm_core_svcalls_ipc.c"
-		"${SFW_IPC_SPM_DIR}/tfm_pools.c"
-		"${SFW_IPC_SPM_DIR}/tfm_thread.c"
-		"${SFW_IPC_SPM_DIR}/tfm_wait.c"
-	)
-
-if (DEFINED TFM_MULTI_CORE_TOPOLOGY AND TFM_MULTI_CORE_TOPOLOGY)
-	list(APPEND SFW_IPC_SPM_SRC "${SFW_IPC_SPM_DIR}/tfm_rpc.c"
-			"${SFW_IPC_SPM_DIR}/tfm_spe_mailbox.c"
-			"${SFW_IPC_SPM_DIR}/tfm_multi_core.c"
-			"${SFW_IPC_SPM_DIR}/tfm_multi_core_mem_check.c"
-			)
-else ()
-	list(APPEND SFW_IPC_SPM_SRC "${SFW_IPC_SPM_DIR}/tfm_nspm_ipc.c"
-			"${SFW_IPC_SPM_DIR}/tfm_psa_api_veneers.c"
-			"${SFW_SPM_COMMON_DIR}/tfm_core_mem_check.c"
-			)
-endif ()
-
-#Append all our source files to global lists.
-list(APPEND ALL_SRC_C ${SFW_IPC_SPM_SRC})
-unset(SFW_IPC_SPM_SRC)
-
-#Setting include directories
-embedded_include_directories(PATH ${SFW_SPM_DIR} ABSOLUTE)
-embedded_include_directories(PATH ${SFW_IPC_SPM_DIR} ABSOLUTE)
-embedded_include_directories(PATH ${TFM_ROOT_DIR}/interface/include ABSOLUTE)
-embedded_include_directories(PATH ${TFM_ROOT_DIR}/secure_fw/include ABSOLUTE)
-embedded_include_directories(PATH ${TFM_ROOT_DIR}/secure_fw/spm/include ABSOLUTE)
-embedded_include_directories(PATH ${TFM_ROOT_DIR}/secure_fw/spm/cmsis_psa/arch ABSOLUTE)
-embedded_include_directories(PATH ${TFM_ROOT_DIR}/bl2/include ABSOLUTE)
-
-#Involve all IPC related sources in psa CMakeLists.inc
-include(${SFW_IPC_SPM_DIR}/arch/CMakeLists.inc)
diff --git a/secure_fw/spm/cmsis_psa/arch/CMakeLists.inc b/secure_fw/spm/cmsis_psa/arch/CMakeLists.inc
deleted file mode 100644
index c0616cd..0000000
--- a/secure_fw/spm/cmsis_psa/arch/CMakeLists.inc
+++ /dev/null
@@ -1,59 +0,0 @@
-#-------------------------------------------------------------------------------
-# Copyright (c) 2019-2020, Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-3-Clause
-#
-#-------------------------------------------------------------------------------
-
-#Definitions to compile the "arch" module.
-#This file assumes it will be included from a project specific cmakefile, and
-#will not create a library or executable.
-#Inputs:
-#	TFM_ROOT_DIR - directory where TF-M soure code is located.
-#
-#Outputs:
-#	Will modify include directories to make the source compile.
-#	ALL_SRC_C_S: C source files to be compiled will be added to this list.
-#	  This shall be added to your add_executable or add_library command.
-#	ALL_SRC_ASM_S: assembly source files to be compiled will be added to this
-#	  list. This shall be added to your add_executable or add_library
-#	  command.
-#	Include directories will be modified by using the include_directories()
-#	  commands as needed.
-
-#Get the current directory where this file is located.
-set(TFM_ARCH_DIR ${CMAKE_CURRENT_LIST_DIR})
-if(NOT DEFINED TFM_ROOT_DIR)
-	message(FATAL_ERROR
-		"Please set TFM_ROOT_DIR before including this file.")
-endif()
-
-if (NOT DEFINED ARM_CPU_ARCHITECTURE)
-	message(FATAL_ERROR "Incomplete build configuration: architecture is not specified.")
-elseif (${ARM_CPU_ARCHITECTURE} STREQUAL "ARMv8.1-M.MAIN")
-	set(TFM_ARCH_C_SRC "${TFM_ARCH_DIR}/tfm_arch_v8m_main.c")
-elseif (${ARM_CPU_ARCHITECTURE} STREQUAL "ARMv8-M.MAIN")
-	set(TFM_ARCH_C_SRC "${TFM_ARCH_DIR}/tfm_arch_v8m_main.c")
-elseif (${ARM_CPU_ARCHITECTURE} STREQUAL "ARMv8-M.BASE")
-	set(TFM_ARCH_C_SRC "${TFM_ARCH_DIR}/tfm_arch_v8m_base.c")
-elseif (${ARM_CPU_ARCHITECTURE} STREQUAL "ARMv7-M" OR
-		${ARM_CPU_ARCHITECTURE} STREQUAL "ARMv6-M" OR
-		${ARM_CPU_ARCHITECTURE} STREQUAL "ARMv6S-M")
-	if (NOT DEFINED TFM_MULTI_CORE_TOPOLOGY OR NOT TFM_MULTI_CORE_TOPOLOGY)
-		message(FATAL_ERROR "Armv6-M/Armv7-M can only support multi-core TF-M.")
-	endif()
-
-	set(TFM_ARCH_C_SRC "${TFM_ARCH_DIR}/tfm_arch_v6m_v7m.c")
-else ()
-	message(FATAL_ERROR "Unsupported architecture.")
-endif()
-
-list(APPEND TFM_ARCH_C_SRC "${TFM_ARCH_DIR}/tfm_arch.c")
-
-#Append all our source files to global secure source code lists.
-list(APPEND ALL_SRC_C_S ${TFM_ARCH_C_SRC})
-unset(TFM_ARCH_C_SRC)
-
-#Setting include directories
-embedded_include_directories(PATH ${TFM_ROOT_DIR}/platform/ext/cmsis ABSOLUTE)
-embedded_include_directories(PATH ${TFM_ROOT_DIR}/secure_fw/include ABSOLUTE)
diff --git a/secure_fw/spm/cmsis_psa/tfm_secure_irq_handlers_ipc.inc b/secure_fw/spm/cmsis_psa/tfm_secure_irq_handlers_ipc.inc
deleted file mode 100644
index bdd6def..0000000
--- a/secure_fw/spm/cmsis_psa/tfm_secure_irq_handlers_ipc.inc
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-/*********** WARNING: This is an auto-generated file. Do not edit! ***********/
-
-#include "secure_fw/partitions/protected_storage/psa_manifest/tfm_protected_storage.h"
-#include "secure_fw/partitions/internal_trusted_storage/psa_manifest/tfm_internal_trusted_storage.h"
-#include "secure_fw/partitions/audit_logging/psa_manifest/tfm_audit_logging.h"
-#include "secure_fw/partitions/crypto/psa_manifest/tfm_crypto.h"
-#include "secure_fw/partitions/platform/psa_manifest/tfm_platform.h"
-#include "secure_fw/partitions/initial_attestation/psa_manifest/tfm_initial_attestation.h"
-#include "../tf-m-tests/test/test_services/tfm_core_test/psa_manifest/tfm_test_core.h"
-#include "../tf-m-tests/test/test_services/tfm_core_test_2/psa_manifest/tfm_test_core_2.h"
-#include "../tf-m-tests/test/test_services/tfm_secure_client_service/psa_manifest/tfm_test_client_service.h"
-#include "../tf-m-tests/test/test_services/tfm_ipc_service/psa_manifest/tfm_ipc_service_partition.h"
-#include "../tf-m-tests/test/test_services/tfm_ipc_client/psa_manifest/tfm_ipc_client_partition.h"
-#include "../tf-m-tests/test/test_services/tfm_irq_test_service_1/psa_manifest/tfm_irq_test_service_1.h"
-#include "../tf-m-tests/test/test_services/tfm_ps_test_service/psa_manifest/tfm_ps_test_service.h"
-#include "../tf-m-tests/test/test_services/tfm_secure_client_2/psa_manifest/tfm_secure_client_2.h"
-#include "cmsis_compiler.h"
-
-/* Definitions of the signals of the IRQs (if any) */
-const struct tfm_core_irq_signal_data_t tfm_core_irq_signals[] = {
-#ifdef TFM_ENABLE_IRQ_TEST
-    { TFM_IRQ_TEST_1, SPM_CORE_IRQ_TEST_1_SIGNAL_TIMER_0_IRQ, TFM_TIMER0_IRQ, 64 },
-#endif /* TFM_ENABLE_IRQ_TEST */
-   {0, 0, (IRQn_Type) 0, 0}                         /* add dummy element to avoid non-standard empty array */
-};
-
-const size_t tfm_core_irq_signals_count = (sizeof(tfm_core_irq_signals) /
-                                           sizeof(*tfm_core_irq_signals)) - 1; /* adjust for the dummy element */
-
-/* Definitions of privileged IRQ handlers (if any) */
-#ifdef TFM_ENABLE_IRQ_TEST
-void TFM_TIMER0_IRQ_Handler(void)
-{
-    __disable_irq();
-    /* It is OK to call tfm_irq_handler directly from here, as we are already
-     * in handler mode, and we will not be pre-empted as we disabled interrupts
-     */
-    tfm_irq_handler(TFM_IRQ_TEST_1, SPM_CORE_IRQ_TEST_1_SIGNAL_TIMER_0_IRQ, TFM_TIMER0_IRQ);
-    __enable_irq();
-}
-
-#endif /* TFM_ENABLE_IRQ_TEST */
-
diff --git a/secure_fw/spm/cmsis_psa/tfm_spm_db_ipc.inc b/secure_fw/spm/cmsis_psa/tfm_spm_db_ipc.inc
deleted file mode 100644
index eb6b980..0000000
--- a/secure_fw/spm/cmsis_psa/tfm_spm_db_ipc.inc
+++ /dev/null
@@ -1,1067 +0,0 @@
-/*
- * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-/*********** WARNING: This is an auto-generated file. Do not edit! ***********/
-
-#ifndef __TFM_SPM_DB_IPC_INC__
-#define __TFM_SPM_DB_IPC_INC__
-
-#include "psa_manifest/sid.h"
-
-/**************************************************************************/
-/** IRQ count per partition */
-/**************************************************************************/
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-#define TFM_PARTITION_TFM_SP_PS_IRQ_COUNT 0
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-#define TFM_PARTITION_TFM_SP_ITS_IRQ_COUNT 0
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-#define TFM_PARTITION_TFM_SP_AUDIT_LOG_IRQ_COUNT 0
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-#define TFM_PARTITION_TFM_SP_CRYPTO_IRQ_COUNT 0
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-#define TFM_PARTITION_TFM_SP_PLATFORM_IRQ_COUNT 0
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-#define TFM_PARTITION_TFM_SP_INITIAL_ATTESTATION_IRQ_COUNT 0
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-#define TFM_PARTITION_TFM_SP_CORE_TEST_IRQ_COUNT 0
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-#define TFM_PARTITION_TFM_SP_CORE_TEST_2_IRQ_COUNT 0
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-#define TFM_PARTITION_TFM_SP_SECURE_TEST_PARTITION_IRQ_COUNT 0
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-#define TFM_PARTITION_TFM_SP_IPC_SERVICE_TEST_IRQ_COUNT 0
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-#define TFM_PARTITION_TFM_SP_IPC_CLIENT_TEST_IRQ_COUNT 0
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-#define TFM_PARTITION_TFM_IRQ_TEST_1_IRQ_COUNT 1
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-#define TFM_PARTITION_TFM_SP_PS_TEST_IRQ_COUNT 0
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-#define TFM_PARTITION_TFM_SP_SECURE_CLIENT_2_IRQ_COUNT 0
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-/**************************************************************************/
-/** Declarations of partition init functions */
-/**************************************************************************/
-extern void tfm_nspm_thread_entry(void);
-
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-extern void tfm_ps_req_mngr_init(void);
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-extern void tfm_its_req_mngr_init(void);
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-extern void audit_core_init(void);
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-extern void tfm_crypto_init(void);
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-extern void platform_sp_init(void);
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-extern void attest_partition_init(void);
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-extern void core_test_init(void);
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-extern void core_test_2_init(void);
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-extern void tfm_secure_client_service_init(void);
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-extern void ipc_service_test_main(void);
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-extern void ipc_client_test_main(void);
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-extern void tfm_irq_test_1_init(void);
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-extern void tfm_ps_test_init(void);
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-extern void tfm_secure_client_2_init(void);
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-/**************************************************************************/
-/** Memory region declarations */
-/**************************************************************************/
-REGION_DECLARE(Image$$, ARM_LIB_STACK, $$ZI$$Base);
-REGION_DECLARE(Image$$, ARM_LIB_STACK, $$ZI$$Limit);
-
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-REGION_DECLARE(Image$$, TFM_SP_PS_LINKER, $$Base);
-REGION_DECLARE(Image$$, TFM_SP_PS_LINKER, $$Limit);
-REGION_DECLARE(Image$$, TFM_SP_PS_LINKER, $$RO$$Base);
-REGION_DECLARE(Image$$, TFM_SP_PS_LINKER, $$RO$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_PS_LINKER, _DATA$$RW$$Base);
-REGION_DECLARE(Image$$, TFM_SP_PS_LINKER, _DATA$$RW$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_PS_LINKER, _DATA$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_PS_LINKER, _DATA$$ZI$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_PS_LINKER, _STACK$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_PS_LINKER, _STACK$$ZI$$Limit);
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-REGION_DECLARE(Image$$, TFM_SP_ITS_LINKER, $$Base);
-REGION_DECLARE(Image$$, TFM_SP_ITS_LINKER, $$Limit);
-REGION_DECLARE(Image$$, TFM_SP_ITS_LINKER, $$RO$$Base);
-REGION_DECLARE(Image$$, TFM_SP_ITS_LINKER, $$RO$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_ITS_LINKER, _DATA$$RW$$Base);
-REGION_DECLARE(Image$$, TFM_SP_ITS_LINKER, _DATA$$RW$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_ITS_LINKER, _DATA$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_ITS_LINKER, _DATA$$ZI$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_ITS_LINKER, _STACK$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_ITS_LINKER, _STACK$$ZI$$Limit);
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG_LINKER, $$Base);
-REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG_LINKER, $$Limit);
-REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG_LINKER, $$RO$$Base);
-REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG_LINKER, $$RO$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG_LINKER, _DATA$$RW$$Base);
-REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG_LINKER, _DATA$$RW$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG_LINKER, _DATA$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG_LINKER, _DATA$$ZI$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG_LINKER, _STACK$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG_LINKER, _STACK$$ZI$$Limit);
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-REGION_DECLARE(Image$$, TFM_SP_CRYPTO_LINKER, $$Base);
-REGION_DECLARE(Image$$, TFM_SP_CRYPTO_LINKER, $$Limit);
-REGION_DECLARE(Image$$, TFM_SP_CRYPTO_LINKER, $$RO$$Base);
-REGION_DECLARE(Image$$, TFM_SP_CRYPTO_LINKER, $$RO$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_CRYPTO_LINKER, _DATA$$RW$$Base);
-REGION_DECLARE(Image$$, TFM_SP_CRYPTO_LINKER, _DATA$$RW$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_CRYPTO_LINKER, _DATA$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_CRYPTO_LINKER, _DATA$$ZI$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_CRYPTO_LINKER, _STACK$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_CRYPTO_LINKER, _STACK$$ZI$$Limit);
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-REGION_DECLARE(Image$$, TFM_SP_PLATFORM_LINKER, $$Base);
-REGION_DECLARE(Image$$, TFM_SP_PLATFORM_LINKER, $$Limit);
-REGION_DECLARE(Image$$, TFM_SP_PLATFORM_LINKER, $$RO$$Base);
-REGION_DECLARE(Image$$, TFM_SP_PLATFORM_LINKER, $$RO$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_PLATFORM_LINKER, _DATA$$RW$$Base);
-REGION_DECLARE(Image$$, TFM_SP_PLATFORM_LINKER, _DATA$$RW$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_PLATFORM_LINKER, _DATA$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_PLATFORM_LINKER, _DATA$$ZI$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_PLATFORM_LINKER, _STACK$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_PLATFORM_LINKER, _STACK$$ZI$$Limit);
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION_LINKER, $$Base);
-REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION_LINKER, $$Limit);
-REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION_LINKER, $$RO$$Base);
-REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION_LINKER, $$RO$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION_LINKER, _DATA$$RW$$Base);
-REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION_LINKER, _DATA$$RW$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION_LINKER, _DATA$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION_LINKER, _DATA$$ZI$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION_LINKER, _STACK$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION_LINKER, _STACK$$ZI$$Limit);
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_LINKER, $$Base);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_LINKER, $$Limit);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_LINKER, $$RO$$Base);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_LINKER, $$RO$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_LINKER, _DATA$$RW$$Base);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_LINKER, _DATA$$RW$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_LINKER, _DATA$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_LINKER, _DATA$$ZI$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_LINKER, _STACK$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_LINKER, _STACK$$ZI$$Limit);
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2_LINKER, $$Base);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2_LINKER, $$Limit);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2_LINKER, $$RO$$Base);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2_LINKER, $$RO$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2_LINKER, _DATA$$RW$$Base);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2_LINKER, _DATA$$RW$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2_LINKER, _DATA$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2_LINKER, _DATA$$ZI$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2_LINKER, _STACK$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2_LINKER, _STACK$$ZI$$Limit);
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION_LINKER, $$Base);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION_LINKER, $$Limit);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION_LINKER, $$RO$$Base);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION_LINKER, $$RO$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION_LINKER, _DATA$$RW$$Base);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION_LINKER, _DATA$$RW$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION_LINKER, _DATA$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION_LINKER, _DATA$$ZI$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION_LINKER, _STACK$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION_LINKER, _STACK$$ZI$$Limit);
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST_LINKER, $$Base);
-REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST_LINKER, $$Limit);
-REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST_LINKER, $$RO$$Base);
-REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST_LINKER, $$RO$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST_LINKER, _DATA$$RW$$Base);
-REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST_LINKER, _DATA$$RW$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST_LINKER, _DATA$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST_LINKER, _DATA$$ZI$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST_LINKER, _STACK$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST_LINKER, _STACK$$ZI$$Limit);
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST_LINKER, $$Base);
-REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST_LINKER, $$Limit);
-REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST_LINKER, $$RO$$Base);
-REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST_LINKER, $$RO$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST_LINKER, _DATA$$RW$$Base);
-REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST_LINKER, _DATA$$RW$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST_LINKER, _DATA$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST_LINKER, _DATA$$ZI$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST_LINKER, _STACK$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST_LINKER, _STACK$$ZI$$Limit);
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-REGION_DECLARE(Image$$, TFM_IRQ_TEST_1_LINKER, $$Base);
-REGION_DECLARE(Image$$, TFM_IRQ_TEST_1_LINKER, $$Limit);
-REGION_DECLARE(Image$$, TFM_IRQ_TEST_1_LINKER, $$RO$$Base);
-REGION_DECLARE(Image$$, TFM_IRQ_TEST_1_LINKER, $$RO$$Limit);
-REGION_DECLARE(Image$$, TFM_IRQ_TEST_1_LINKER, _DATA$$RW$$Base);
-REGION_DECLARE(Image$$, TFM_IRQ_TEST_1_LINKER, _DATA$$RW$$Limit);
-REGION_DECLARE(Image$$, TFM_IRQ_TEST_1_LINKER, _DATA$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_IRQ_TEST_1_LINKER, _DATA$$ZI$$Limit);
-REGION_DECLARE(Image$$, TFM_IRQ_TEST_1_LINKER, _STACK$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_IRQ_TEST_1_LINKER, _STACK$$ZI$$Limit);
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-REGION_DECLARE(Image$$, TFM_SP_PS_TEST_LINKER, $$Base);
-REGION_DECLARE(Image$$, TFM_SP_PS_TEST_LINKER, $$Limit);
-REGION_DECLARE(Image$$, TFM_SP_PS_TEST_LINKER, $$RO$$Base);
-REGION_DECLARE(Image$$, TFM_SP_PS_TEST_LINKER, $$RO$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_PS_TEST_LINKER, _DATA$$RW$$Base);
-REGION_DECLARE(Image$$, TFM_SP_PS_TEST_LINKER, _DATA$$RW$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_PS_TEST_LINKER, _DATA$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_PS_TEST_LINKER, _DATA$$ZI$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_PS_TEST_LINKER, _STACK$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_PS_TEST_LINKER, _STACK$$ZI$$Limit);
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-REGION_DECLARE(Image$$, TFM_SP_SECURE_CLIENT_2_LINKER, $$Base);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_CLIENT_2_LINKER, $$Limit);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_CLIENT_2_LINKER, $$RO$$Base);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_CLIENT_2_LINKER, $$RO$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_CLIENT_2_LINKER, _DATA$$RW$$Base);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_CLIENT_2_LINKER, _DATA$$RW$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_CLIENT_2_LINKER, _DATA$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_CLIENT_2_LINKER, _DATA$$ZI$$Limit);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_CLIENT_2_LINKER, _STACK$$ZI$$Base);
-REGION_DECLARE(Image$$, TFM_SP_SECURE_CLIENT_2_LINKER, _STACK$$ZI$$Limit);
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-/**************************************************************************/
-/** Dependencies array for Secure Partition */
-/**************************************************************************/
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-static uint32_t dependencies_TFM_SP_PS[] =
-{
-    TFM_CRYPTO_SID,
-    TFM_ITS_SET_SID,
-    TFM_ITS_GET_SID,
-    TFM_ITS_GET_INFO_SID,
-    TFM_ITS_REMOVE_SID,
-    TFM_SP_PLATFORM_NV_COUNTER_SID,
-};
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_CRYPTO
-static uint32_t dependencies_TFM_SP_CRYPTO[] =
-{
-    TFM_ITS_SET_SID,
-    TFM_ITS_GET_SID,
-    TFM_ITS_GET_INFO_SID,
-    TFM_ITS_REMOVE_SID,
-};
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-static uint32_t dependencies_TFM_SP_INITIAL_ATTESTATION[] =
-{
-    TFM_CRYPTO_SID,
-};
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-static uint32_t dependencies_TFM_SP_CORE_TEST[] =
-{
-    SPM_CORE_TEST_2_INVERT_SID,
-    SPM_CORE_TEST_2_GET_EVERY_SECOND_BYTE_SID,
-    SPM_CORE_TEST_2_SLAVE_SERVICE_SID,
-};
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-static uint32_t dependencies_TFM_SP_SECURE_TEST_PARTITION[] =
-{
-    TFM_SECURE_CLIENT_2_SID,
-    TFM_CRYPTO_SID,
-    TFM_PS_SET_SID,
-    TFM_PS_GET_SID,
-    TFM_PS_GET_INFO_SID,
-    TFM_PS_REMOVE_SID,
-    TFM_PS_GET_SUPPORT_SID,
-    TFM_ITS_SET_SID,
-    TFM_ITS_GET_SID,
-    TFM_ITS_GET_INFO_SID,
-    TFM_ITS_REMOVE_SID,
-    TFM_ATTEST_GET_TOKEN_SID,
-    TFM_ATTEST_GET_TOKEN_SIZE_SID,
-    TFM_ATTEST_GET_PUBLIC_KEY_SID,
-    TFM_PS_TEST_PREPARE_SID,
-    TFM_SP_PLATFORM_SYSTEM_RESET_SID,
-    TFM_SP_PLATFORM_IOCTL_SID,
-};
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-static uint32_t dependencies_TFM_SP_IPC_CLIENT_TEST[] =
-{
-    IPC_SERVICE_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SID,
-    IPC_SERVICE_TEST_PSA_ACCESS_APP_MEM_SID,
-    IPC_SERVICE_TEST_BASIC_SID,
-    IPC_SERVICE_TEST_APP_ACCESS_PSA_MEM_SID,
-};
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_PS
-static uint32_t dependencies_TFM_SP_PS_TEST[] =
-{
-    TFM_CRYPTO_SID,
-    TFM_ITS_GET_SID,
-    TFM_ITS_REMOVE_SID,
-};
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-static uint32_t dependencies_TFM_SP_SECURE_CLIENT_2[] =
-{
-    TFM_ITS_GET_SID,
-    TFM_CRYPTO_SID,
-};
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-/**************************************************************************/
-/** The static data of the partition list */
-/**************************************************************************/
-const struct partition_static_t static_data_list[] =
-{
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_SP_NON_SECURE_ID,
-#if TFM_MULTI_CORE_TOPOLOGY
-        .partition_flags      = SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_IPC,
-#else
-        .partition_flags      = SPM_PART_FLAG_APP_ROT | SPM_PART_FLAG_IPC,
-#endif
-        .partition_priority   = TFM_PRIORITY_LOW,
-        .partition_init       = tfm_nspm_thread_entry,
-    },
-
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_SP_PS,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = tfm_ps_req_mngr_init,
-        .dependencies_num     = 6,
-        .p_dependencies       = dependencies_TFM_SP_PS,
-    },
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_SP_ITS,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = tfm_its_req_mngr_init,
-        .dependencies_num     = 0,
-        .p_dependencies       = NULL,
-    },
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_SP_AUDIT_LOG,
-        .partition_flags      = 0
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = audit_core_init,
-        .dependencies_num     = 0,
-        .p_dependencies       = NULL,
-    },
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_SP_CRYPTO,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = tfm_crypto_init,
-        .dependencies_num     = 4,
-        .p_dependencies       = dependencies_TFM_SP_CRYPTO,
-    },
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_SP_PLATFORM,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = platform_sp_init,
-        .dependencies_num     = 0,
-        .p_dependencies       = NULL,
-    },
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_SP_INITIAL_ATTESTATION,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = attest_partition_init,
-        .dependencies_num     = 1,
-        .p_dependencies       = dependencies_TFM_SP_INITIAL_ATTESTATION,
-    },
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_SP_CORE_TEST,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = core_test_init,
-        .dependencies_num     = 3,
-        .p_dependencies       = dependencies_TFM_SP_CORE_TEST,
-    },
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_SP_CORE_TEST_2,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = core_test_2_init,
-        .dependencies_num     = 0,
-        .p_dependencies       = NULL,
-    },
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_SP_SECURE_TEST_PARTITION,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = tfm_secure_client_service_init,
-        .dependencies_num     = 17,
-        .p_dependencies       = dependencies_TFM_SP_SECURE_TEST_PARTITION,
-    },
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_SP_IPC_SERVICE_TEST,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(HIGH),
-        .partition_init       = ipc_service_test_main,
-        .dependencies_num     = 0,
-        .p_dependencies       = NULL,
-    },
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_SP_IPC_CLIENT_TEST,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = ipc_client_test_main,
-        .dependencies_num     = 4,
-        .p_dependencies       = dependencies_TFM_SP_IPC_CLIENT_TEST,
-    },
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_IRQ_TEST_1,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = tfm_irq_test_1_init,
-        .dependencies_num     = 0,
-        .p_dependencies       = NULL,
-    },
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_SP_PS_TEST,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = tfm_ps_test_init,
-        .dependencies_num     = 3,
-        .p_dependencies       = dependencies_TFM_SP_PS_TEST,
-    },
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    {
-        .psa_framework_version = 0x0100,
-        .partition_id         = TFM_SP_SECURE_CLIENT_2,
-        .partition_flags      = SPM_PART_FLAG_IPC
-                              | SPM_PART_FLAG_APP_ROT
-                              ,
-        .partition_priority   = TFM_PRIORITY(NORMAL),
-        .partition_init       = tfm_secure_client_2_init,
-        .dependencies_num     = 2,
-        .p_dependencies       = dependencies_TFM_SP_SECURE_CLIENT_2,
-    },
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-};
-
-/**************************************************************************/
-/** The platform data of the partition list */
-/**************************************************************************/
-#ifdef TFM_PARTITION_AUDIT_LOG
-const struct tfm_spm_partition_platform_data_t *
-    platform_data_list_TFM_SP_AUDIT_LOG[] =
-{
-#ifdef AUDIT_UART_REDIRECTION
-    TFM_PERIPHERAL_UART1,
-#endif /* AUDIT_UART_REDIRECTION */
-    NULL
-};
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_TEST_CORE
-const struct tfm_spm_partition_platform_data_t *
-    platform_data_list_TFM_SP_CORE_TEST[] =
-{
-    TFM_PERIPHERAL_FPGA_IO,
-    NULL
-};
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-const struct tfm_spm_partition_platform_data_t *
-    platform_data_list_TFM_SP_SECURE_TEST_PARTITION[] =
-{
-    TFM_PERIPHERAL_STD_UART,
-    NULL
-};
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-const struct tfm_spm_partition_platform_data_t *
-    platform_data_list_TFM_IRQ_TEST_1[] =
-{
-    TFM_PERIPHERAL_TIMER0,
-    NULL
-};
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-const struct tfm_spm_partition_platform_data_t **platform_data_list_list[] =
-{
-    NULL,
-
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-    NULL,
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-    NULL,
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-    platform_data_list_TFM_SP_AUDIT_LOG,
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-    NULL,
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-    NULL,
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-    NULL,
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-    platform_data_list_TFM_SP_CORE_TEST,
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-    NULL,
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    platform_data_list_TFM_SP_SECURE_TEST_PARTITION,
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    NULL,
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    NULL,
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-    platform_data_list_TFM_IRQ_TEST_1,
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-    NULL,
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    NULL,
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-};
-
-/**************************************************************************/
-/** The memory data of the partition list */
-/**************************************************************************/
-const struct tfm_spm_partition_memory_data_t memory_data_list[] =
-{
-    {
-        .stack_bottom         = PART_REGION_ADDR(ARM_LIB_STACK, $$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(ARM_LIB_STACK, $$ZI$$Limit),
-        .rw_start             = PART_REGION_ADDR(ARM_LIB_STACK, $$ZI$$Base),
-    },
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-    {
-        .code_start           = PART_REGION_ADDR(TFM_SP_PS_LINKER, $$Base),
-        .code_limit           = PART_REGION_ADDR(TFM_SP_PS_LINKER, $$Limit),
-        .ro_start             = PART_REGION_ADDR(TFM_SP_PS_LINKER, $$RO$$Base),
-        .ro_limit             = PART_REGION_ADDR(TFM_SP_PS_LINKER, $$RO$$Limit),
-        .rw_start             = PART_REGION_ADDR(TFM_SP_PS_LINKER, _DATA$$RW$$Base),
-        .rw_limit             = PART_REGION_ADDR(TFM_SP_PS_LINKER, _DATA$$RW$$Limit),
-        .zi_start             = PART_REGION_ADDR(TFM_SP_PS_LINKER, _DATA$$ZI$$Base),
-        .zi_limit             = PART_REGION_ADDR(TFM_SP_PS_LINKER, _DATA$$ZI$$Limit),
-        .stack_bottom         = PART_REGION_ADDR(TFM_SP_PS_LINKER, _STACK$$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(TFM_SP_PS_LINKER, _STACK$$ZI$$Limit),
-    },
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-    {
-        .code_start           = PART_REGION_ADDR(TFM_SP_ITS_LINKER, $$Base),
-        .code_limit           = PART_REGION_ADDR(TFM_SP_ITS_LINKER, $$Limit),
-        .ro_start             = PART_REGION_ADDR(TFM_SP_ITS_LINKER, $$RO$$Base),
-        .ro_limit             = PART_REGION_ADDR(TFM_SP_ITS_LINKER, $$RO$$Limit),
-        .rw_start             = PART_REGION_ADDR(TFM_SP_ITS_LINKER, _DATA$$RW$$Base),
-        .rw_limit             = PART_REGION_ADDR(TFM_SP_ITS_LINKER, _DATA$$RW$$Limit),
-        .zi_start             = PART_REGION_ADDR(TFM_SP_ITS_LINKER, _DATA$$ZI$$Base),
-        .zi_limit             = PART_REGION_ADDR(TFM_SP_ITS_LINKER, _DATA$$ZI$$Limit),
-        .stack_bottom         = PART_REGION_ADDR(TFM_SP_ITS_LINKER, _STACK$$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(TFM_SP_ITS_LINKER, _STACK$$ZI$$Limit),
-    },
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-    {
-        .code_start           = PART_REGION_ADDR(TFM_SP_AUDIT_LOG_LINKER, $$Base),
-        .code_limit           = PART_REGION_ADDR(TFM_SP_AUDIT_LOG_LINKER, $$Limit),
-        .ro_start             = PART_REGION_ADDR(TFM_SP_AUDIT_LOG_LINKER, $$RO$$Base),
-        .ro_limit             = PART_REGION_ADDR(TFM_SP_AUDIT_LOG_LINKER, $$RO$$Limit),
-        .rw_start             = PART_REGION_ADDR(TFM_SP_AUDIT_LOG_LINKER, _DATA$$RW$$Base),
-        .rw_limit             = PART_REGION_ADDR(TFM_SP_AUDIT_LOG_LINKER, _DATA$$RW$$Limit),
-        .zi_start             = PART_REGION_ADDR(TFM_SP_AUDIT_LOG_LINKER, _DATA$$ZI$$Base),
-        .zi_limit             = PART_REGION_ADDR(TFM_SP_AUDIT_LOG_LINKER, _DATA$$ZI$$Limit),
-        .stack_bottom         = PART_REGION_ADDR(TFM_SP_AUDIT_LOG_LINKER, _STACK$$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(TFM_SP_AUDIT_LOG_LINKER, _STACK$$ZI$$Limit),
-    },
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-    {
-        .code_start           = PART_REGION_ADDR(TFM_SP_CRYPTO_LINKER, $$Base),
-        .code_limit           = PART_REGION_ADDR(TFM_SP_CRYPTO_LINKER, $$Limit),
-        .ro_start             = PART_REGION_ADDR(TFM_SP_CRYPTO_LINKER, $$RO$$Base),
-        .ro_limit             = PART_REGION_ADDR(TFM_SP_CRYPTO_LINKER, $$RO$$Limit),
-        .rw_start             = PART_REGION_ADDR(TFM_SP_CRYPTO_LINKER, _DATA$$RW$$Base),
-        .rw_limit             = PART_REGION_ADDR(TFM_SP_CRYPTO_LINKER, _DATA$$RW$$Limit),
-        .zi_start             = PART_REGION_ADDR(TFM_SP_CRYPTO_LINKER, _DATA$$ZI$$Base),
-        .zi_limit             = PART_REGION_ADDR(TFM_SP_CRYPTO_LINKER, _DATA$$ZI$$Limit),
-        .stack_bottom         = PART_REGION_ADDR(TFM_SP_CRYPTO_LINKER, _STACK$$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(TFM_SP_CRYPTO_LINKER, _STACK$$ZI$$Limit),
-    },
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-    {
-        .code_start           = PART_REGION_ADDR(TFM_SP_PLATFORM_LINKER, $$Base),
-        .code_limit           = PART_REGION_ADDR(TFM_SP_PLATFORM_LINKER, $$Limit),
-        .ro_start             = PART_REGION_ADDR(TFM_SP_PLATFORM_LINKER, $$RO$$Base),
-        .ro_limit             = PART_REGION_ADDR(TFM_SP_PLATFORM_LINKER, $$RO$$Limit),
-        .rw_start             = PART_REGION_ADDR(TFM_SP_PLATFORM_LINKER, _DATA$$RW$$Base),
-        .rw_limit             = PART_REGION_ADDR(TFM_SP_PLATFORM_LINKER, _DATA$$RW$$Limit),
-        .zi_start             = PART_REGION_ADDR(TFM_SP_PLATFORM_LINKER, _DATA$$ZI$$Base),
-        .zi_limit             = PART_REGION_ADDR(TFM_SP_PLATFORM_LINKER, _DATA$$ZI$$Limit),
-        .stack_bottom         = PART_REGION_ADDR(TFM_SP_PLATFORM_LINKER, _STACK$$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(TFM_SP_PLATFORM_LINKER, _STACK$$ZI$$Limit),
-    },
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-    {
-        .code_start           = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION_LINKER, $$Base),
-        .code_limit           = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION_LINKER, $$Limit),
-        .ro_start             = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION_LINKER, $$RO$$Base),
-        .ro_limit             = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION_LINKER, $$RO$$Limit),
-        .rw_start             = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION_LINKER, _DATA$$RW$$Base),
-        .rw_limit             = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION_LINKER, _DATA$$RW$$Limit),
-        .zi_start             = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION_LINKER, _DATA$$ZI$$Base),
-        .zi_limit             = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION_LINKER, _DATA$$ZI$$Limit),
-        .stack_bottom         = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION_LINKER, _STACK$$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION_LINKER, _STACK$$ZI$$Limit),
-    },
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-    {
-        .code_start           = PART_REGION_ADDR(TFM_SP_CORE_TEST_LINKER, $$Base),
-        .code_limit           = PART_REGION_ADDR(TFM_SP_CORE_TEST_LINKER, $$Limit),
-        .ro_start             = PART_REGION_ADDR(TFM_SP_CORE_TEST_LINKER, $$RO$$Base),
-        .ro_limit             = PART_REGION_ADDR(TFM_SP_CORE_TEST_LINKER, $$RO$$Limit),
-        .rw_start             = PART_REGION_ADDR(TFM_SP_CORE_TEST_LINKER, _DATA$$RW$$Base),
-        .rw_limit             = PART_REGION_ADDR(TFM_SP_CORE_TEST_LINKER, _DATA$$RW$$Limit),
-        .zi_start             = PART_REGION_ADDR(TFM_SP_CORE_TEST_LINKER, _DATA$$ZI$$Base),
-        .zi_limit             = PART_REGION_ADDR(TFM_SP_CORE_TEST_LINKER, _DATA$$ZI$$Limit),
-        .stack_bottom         = PART_REGION_ADDR(TFM_SP_CORE_TEST_LINKER, _STACK$$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(TFM_SP_CORE_TEST_LINKER, _STACK$$ZI$$Limit),
-    },
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-    {
-        .code_start           = PART_REGION_ADDR(TFM_SP_CORE_TEST_2_LINKER, $$Base),
-        .code_limit           = PART_REGION_ADDR(TFM_SP_CORE_TEST_2_LINKER, $$Limit),
-        .ro_start             = PART_REGION_ADDR(TFM_SP_CORE_TEST_2_LINKER, $$RO$$Base),
-        .ro_limit             = PART_REGION_ADDR(TFM_SP_CORE_TEST_2_LINKER, $$RO$$Limit),
-        .rw_start             = PART_REGION_ADDR(TFM_SP_CORE_TEST_2_LINKER, _DATA$$RW$$Base),
-        .rw_limit             = PART_REGION_ADDR(TFM_SP_CORE_TEST_2_LINKER, _DATA$$RW$$Limit),
-        .zi_start             = PART_REGION_ADDR(TFM_SP_CORE_TEST_2_LINKER, _DATA$$ZI$$Base),
-        .zi_limit             = PART_REGION_ADDR(TFM_SP_CORE_TEST_2_LINKER, _DATA$$ZI$$Limit),
-        .stack_bottom         = PART_REGION_ADDR(TFM_SP_CORE_TEST_2_LINKER, _STACK$$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(TFM_SP_CORE_TEST_2_LINKER, _STACK$$ZI$$Limit),
-    },
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    {
-        .code_start           = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION_LINKER, $$Base),
-        .code_limit           = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION_LINKER, $$Limit),
-        .ro_start             = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION_LINKER, $$RO$$Base),
-        .ro_limit             = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION_LINKER, $$RO$$Limit),
-        .rw_start             = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION_LINKER, _DATA$$RW$$Base),
-        .rw_limit             = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION_LINKER, _DATA$$RW$$Limit),
-        .zi_start             = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION_LINKER, _DATA$$ZI$$Base),
-        .zi_limit             = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION_LINKER, _DATA$$ZI$$Limit),
-        .stack_bottom         = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION_LINKER, _STACK$$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION_LINKER, _STACK$$ZI$$Limit),
-    },
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    {
-        .code_start           = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST_LINKER, $$Base),
-        .code_limit           = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST_LINKER, $$Limit),
-        .ro_start             = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST_LINKER, $$RO$$Base),
-        .ro_limit             = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST_LINKER, $$RO$$Limit),
-        .rw_start             = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST_LINKER, _DATA$$RW$$Base),
-        .rw_limit             = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST_LINKER, _DATA$$RW$$Limit),
-        .zi_start             = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST_LINKER, _DATA$$ZI$$Base),
-        .zi_limit             = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST_LINKER, _DATA$$ZI$$Limit),
-        .stack_bottom         = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST_LINKER, _STACK$$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST_LINKER, _STACK$$ZI$$Limit),
-    },
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    {
-        .code_start           = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST_LINKER, $$Base),
-        .code_limit           = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST_LINKER, $$Limit),
-        .ro_start             = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST_LINKER, $$RO$$Base),
-        .ro_limit             = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST_LINKER, $$RO$$Limit),
-        .rw_start             = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST_LINKER, _DATA$$RW$$Base),
-        .rw_limit             = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST_LINKER, _DATA$$RW$$Limit),
-        .zi_start             = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST_LINKER, _DATA$$ZI$$Base),
-        .zi_limit             = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST_LINKER, _DATA$$ZI$$Limit),
-        .stack_bottom         = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST_LINKER, _STACK$$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST_LINKER, _STACK$$ZI$$Limit),
-    },
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-    {
-        .code_start           = PART_REGION_ADDR(TFM_IRQ_TEST_1_LINKER, $$Base),
-        .code_limit           = PART_REGION_ADDR(TFM_IRQ_TEST_1_LINKER, $$Limit),
-        .ro_start             = PART_REGION_ADDR(TFM_IRQ_TEST_1_LINKER, $$RO$$Base),
-        .ro_limit             = PART_REGION_ADDR(TFM_IRQ_TEST_1_LINKER, $$RO$$Limit),
-        .rw_start             = PART_REGION_ADDR(TFM_IRQ_TEST_1_LINKER, _DATA$$RW$$Base),
-        .rw_limit             = PART_REGION_ADDR(TFM_IRQ_TEST_1_LINKER, _DATA$$RW$$Limit),
-        .zi_start             = PART_REGION_ADDR(TFM_IRQ_TEST_1_LINKER, _DATA$$ZI$$Base),
-        .zi_limit             = PART_REGION_ADDR(TFM_IRQ_TEST_1_LINKER, _DATA$$ZI$$Limit),
-        .stack_bottom         = PART_REGION_ADDR(TFM_IRQ_TEST_1_LINKER, _STACK$$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(TFM_IRQ_TEST_1_LINKER, _STACK$$ZI$$Limit),
-    },
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-    {
-        .code_start           = PART_REGION_ADDR(TFM_SP_PS_TEST_LINKER, $$Base),
-        .code_limit           = PART_REGION_ADDR(TFM_SP_PS_TEST_LINKER, $$Limit),
-        .ro_start             = PART_REGION_ADDR(TFM_SP_PS_TEST_LINKER, $$RO$$Base),
-        .ro_limit             = PART_REGION_ADDR(TFM_SP_PS_TEST_LINKER, $$RO$$Limit),
-        .rw_start             = PART_REGION_ADDR(TFM_SP_PS_TEST_LINKER, _DATA$$RW$$Base),
-        .rw_limit             = PART_REGION_ADDR(TFM_SP_PS_TEST_LINKER, _DATA$$RW$$Limit),
-        .zi_start             = PART_REGION_ADDR(TFM_SP_PS_TEST_LINKER, _DATA$$ZI$$Base),
-        .zi_limit             = PART_REGION_ADDR(TFM_SP_PS_TEST_LINKER, _DATA$$ZI$$Limit),
-        .stack_bottom         = PART_REGION_ADDR(TFM_SP_PS_TEST_LINKER, _STACK$$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(TFM_SP_PS_TEST_LINKER, _STACK$$ZI$$Limit),
-    },
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    {
-        .code_start           = PART_REGION_ADDR(TFM_SP_SECURE_CLIENT_2_LINKER, $$Base),
-        .code_limit           = PART_REGION_ADDR(TFM_SP_SECURE_CLIENT_2_LINKER, $$Limit),
-        .ro_start             = PART_REGION_ADDR(TFM_SP_SECURE_CLIENT_2_LINKER, $$RO$$Base),
-        .ro_limit             = PART_REGION_ADDR(TFM_SP_SECURE_CLIENT_2_LINKER, $$RO$$Limit),
-        .rw_start             = PART_REGION_ADDR(TFM_SP_SECURE_CLIENT_2_LINKER, _DATA$$RW$$Base),
-        .rw_limit             = PART_REGION_ADDR(TFM_SP_SECURE_CLIENT_2_LINKER, _DATA$$RW$$Limit),
-        .zi_start             = PART_REGION_ADDR(TFM_SP_SECURE_CLIENT_2_LINKER, _DATA$$ZI$$Base),
-        .zi_limit             = PART_REGION_ADDR(TFM_SP_SECURE_CLIENT_2_LINKER, _DATA$$ZI$$Limit),
-        .stack_bottom         = PART_REGION_ADDR(TFM_SP_SECURE_CLIENT_2_LINKER, _STACK$$ZI$$Base),
-        .stack_top            = PART_REGION_ADDR(TFM_SP_SECURE_CLIENT_2_LINKER, _STACK$$ZI$$Limit),
-    },
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-};
-
-/**************************************************************************/
-/** The partition list for the DB */
-/**************************************************************************/
-static struct partition_t partition_list [] =
-{
-    {0}, /* placeholder for Non-secure internal partition */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_PS */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-    {0},
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_ITS */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-    {0},
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_AUDIT_LOG */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_AUDIT_LOG
-    {0},
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_CRYPTO */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_CRYPTO
-    {0},
-#endif /* TFM_PARTITION_CRYPTO */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_PLATFORM */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_PLATFORM
-    {0},
-#endif /* TFM_PARTITION_PLATFORM */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_INITIAL_ATTESTATION */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-    {0},
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_CORE_TEST */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_TEST_CORE
-    {0},
-#endif /* TFM_PARTITION_TEST_CORE */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_CORE_TEST_2 */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_TEST_CORE
-    {0},
-#endif /* TFM_PARTITION_TEST_CORE */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_SECURE_TEST_PARTITION */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    {0},
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_IPC_SERVICE_TEST */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    {0},
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_IPC_CLIENT_TEST */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-    {0},
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_IRQ_TEST_1 */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_ENABLE_IRQ_TEST
-    {0},
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_PS_TEST */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_TEST_PS
-    {0},
-#endif /* TFM_PARTITION_TEST_PS */
-
-    /* -----------------------------------------------------------------------*/
-    /* - Partition DB record for TFM_SP_SECURE_CLIENT_2 */
-    /* -----------------------------------------------------------------------*/
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-    {0},
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-};
-
-struct spm_partition_db_t g_spm_partition_db = {
-    .is_init = 0,
-    .partition_count = sizeof(partition_list) / sizeof(partition_list[0]),
-    .partitions = partition_list,
-};
-
-#endif /* __TFM_SPM_DB_IPC_INC__ */
\ No newline at end of file
diff --git a/secure_fw/spm/include/tfm_boot_status.h b/secure_fw/spm/include/tfm_boot_status.h
new file mode 100644
index 0000000..27ce6cb
--- /dev/null
+++ b/secure_fw/spm/include/tfm_boot_status.h
@@ -0,0 +1,212 @@
+/*
+ * Copyright (c) 2018-2020, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#ifndef __TFM_BOOT_STATUS_H__
+#define __TFM_BOOT_STATUS_H__
+
+#include <stdint.h>
+#include <stddef.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Major numbers (4 bit) to identify
+ * the consumer of shared data in runtime SW
+ */
+#define TLV_MAJOR_CORE     0x0
+#define TLV_MAJOR_IAS      0x1
+
+/**
+ * The shared data between boot loader and runtime SW is TLV encoded. The
+ * shared data is stored in a well known location in secure memory and this is
+ * a contract between boot loader and runtime SW.
+ *
+ * The structure of shared data must be the following:
+ *  - At the beginning there must be a header: struct shared_data_tlv_header
+ *    This contains a magic number and a size field which covers the entire
+ *    size of the shared data area including this header.
+ *  - After the header there come the entries which are composed from an entry
+ *    header structure: struct shared_data_tlv_entry and the data. In the entry
+ *    header is a type field (tly_type) which identify the consumer of the
+ *    entry in the runtime SW and specify the subtype of that data item. There
+ *    is a size field (tlv_len) which covers the size of the entry header and
+ *    the data. After this structure comes the actual data.
+ *  - Arbitrary number and size of data entry can be in the shared memory area.
+ *
+ * This table gives of overview about the tlv_type field in the entry header.
+ * The tlv_type always composed from a major and minor number. Major number
+ * identifies the addressee in runtime SW, who should process the data entry.
+ * Minor number used to encode more info about the data entry. The actual
+ * definition of minor number could change per major number. In case of boot
+ * status data, which is going to be processed by initial attestation service
+ * the minor number is split further to two part: sw_module and claim. The
+ * sw_module identifies the SW component in the system which the data item
+ * belongs to and the claim part identifies the exact type of the data.
+ *
+ * |---------------------------------------|
+ * |            tlv_type (16)              |
+ * |---------------------------------------|
+ * | tlv_major(4)|      tlv_minor(12)      |
+ * |---------------------------------------|
+ * | MAJOR_IAS   | sw_module(6) | claim(6) |
+ * |---------------------------------------|
+ * | MAJOR_CORE  |          TBD            |
+ * |---------------------------------------|
+ */
+
+/* Initial attestation: SW components / SW modules
+ * This list is intended to be adjusted per device. It contains more SW
+ * components than currently available in TF-M project. It serves as an example,
+ * what kind of SW components might be available.
+ */
+#define SW_GENERAL     0x00
+#define SW_BL2         0x01
+#define SW_PROT        0x02
+#define SW_AROT        0x03
+#define SW_SPE         0x04
+#define SW_NSPE        0x05
+#define SW_S_NS        0x06
+#define SW_MAX         0x07
+
+/* Initial attestation: Claim per SW components / SW modules */
+/* Bits: 0-2 */
+#define SW_VERSION       0x00
+#define SW_SIGNER_ID     0x01
+/* Reserved              0x02 */
+#define SW_TYPE          0x03
+/* Bits: 3-5 */
+#define SW_MEASURE_VALUE 0x08
+#define SW_MEASURE_TYPE  0x09
+#define SW_BOOT_RECORD   0x3F
+
+/* Initial attestation: General claim does not belong any particular SW
+ * component. But they might be part of the boot status.
+ */
+#define BOOT_SEED          0x00
+#define HW_VERSION         0x01
+#define SECURITY_LIFECYCLE 0x02
+
+/* Minor numbers (12 bit) to identify attestation service related data */
+#define TLV_MINOR_IAS_BOOT_SEED       ((SW_GENERAL << 6) | BOOT_SEED)
+#define TLV_MINOR_IAS_HW_VERSION      ((SW_GENERAL << 6) | HW_VERSION)
+#define TLV_MINOR_IAS_SLC             ((SW_GENERAL << 6) | SECURITY_LIFECYCLE)
+
+/* Bootloader - It can be more stage */
+#define TLV_MINOR_IAS_BL2_MEASURE_VALUE  ((SW_BL2  << 6) | SW_MEASURE_VALUE)
+#define TLV_MINOR_IAS_BL2_MEASURE_TYPE   ((SW_BL2  << 6) | SW_MEASURE_TYPE)
+#define TLV_MINOR_IAS_BL2_VERSION        ((SW_BL2  << 6) | SW_VERSION)
+#define TLV_MINOR_IAS_BL2_SIGNER_ID      ((SW_BL2  << 6) | SW_SIGNER_ID)
+#define TLV_MINOR_IAS_BL2_TYPE           ((SW_BL2  << 6) | SW_TYPE)
+
+/* PROT: PSA Root of Trust */
+#define TLV_MINOR_IAS_PROT_MEASURE_VALUE ((SW_PROT << 6) | SW_MEASURE_VALUE)
+#define TLV_MINOR_IAS_PROT_MEASURE_TYPE  ((SW_PROT << 6) | SW_MEASURE_TYPE)
+#define TLV_MINOR_IAS_PROT_VERSION       ((SW_PROT << 6) | SW_VERSION)
+#define TLV_MINOR_IAS_PROT_SIGNER_ID     ((SW_PROT << 6) | SW_SIGNER_ID)
+#define TLV_MINOR_IAS_PROT_TYPE          ((SW_PROT << 6) | SW_TYPE)
+
+/* AROT: Application Root of Trust */
+#define TLV_MINOR_IAS_AROT_MEASURE_VALUE ((SW_AROT << 6) | SW_MEASURE_VALUE)
+#define TLV_MINOR_IAS_AROT_MEASURE_TYPE  ((SW_AROT << 6) | SW_MEASURE_TYPE)
+#define TLV_MINOR_IAS_AROT_VERSION       ((SW_AROT << 6) | SW_VERSION)
+#define TLV_MINOR_IAS_AROT_SIGNER_ID     ((SW_AROT << 6) | SW_SIGNER_ID)
+#define TLV_MINOR_IAS_AROT_TYPE          ((SW_AROT << 6) | SW_TYPE)
+
+/* Non-secure processing environment - single non-secure image */
+#define TLV_MINOR_IAS_NSPE_MEASURE_VALUE ((SW_NSPE << 6) | SW_MEASURE_VALUE)
+#define TLV_MINOR_IAS_NSPE_MEASURE_TYPE  ((SW_NSPE << 6) | SW_MEASURE_TYPE)
+#define TLV_MINOR_IAS_NSPE_VERSION       ((SW_NSPE << 6) | SW_VERSION)
+#define TLV_MINOR_IAS_NSPE_SIGNER_ID     ((SW_NSPE << 6) | SW_SIGNER_ID)
+#define TLV_MINOR_IAS_NSPE_TYPE          ((SW_NSPE << 6) | SW_TYPE)
+
+/* Secure processing environment (ARoT + PRoT) - single secure image */
+#define TLV_MINOR_IAS_SPE_MEASURE_VALUE  ((SW_SPE  << 6) | SW_MEASURE_VALUE)
+#define TLV_MINOR_IAS_SPE_MEASURE_TYPE   ((SW_SPE  << 6) | SW_MEASURE_TYPE)
+#define TLV_MINOR_IAS_SPE_VERSION        ((SW_SPE  << 6) | SW_VERSION)
+#define TLV_MINOR_IAS_SPE_SIGNER_ID      ((SW_SPE  << 6) | SW_SIGNER_ID)
+#define TLV_MINOR_IAS_SPE_TYPE           ((SW_SPE  << 6) | SW_TYPE)
+
+/* SPE + NSPE - combined secure and non-secure image */
+#define TLV_MINOR_IAS_S_NS_MEASURE_VALUE ((SW_S_NS << 6) | SW_MEASURE_VALUE)
+#define TLV_MINOR_IAS_S_NS_MEASURE_TYPE  ((SW_S_NS << 6) | SW_MEASURE_TYPE)
+#define TLV_MINOR_IAS_S_NS_VERSION       ((SW_S_NS << 6) | SW_VERSION)
+#define TLV_MINOR_IAS_S_NS_SIGNER_ID     ((SW_S_NS << 6) | SW_SIGNER_ID)
+#define TLV_MINOR_IAS_S_NS_TYPE          ((SW_S_NS << 6) | SW_TYPE)
+
+/* General macros to handle TLV type */
+#define MAJOR_MASK 0xF     /* 4  bit */
+#define MAJOR_POS  12      /* 12 bit */
+#define MINOR_MASK 0xFFF   /* 12 bit */
+
+#define SET_TLV_TYPE(major, minor) \
+        ((((major) & MAJOR_MASK) << MAJOR_POS) | ((minor) & MINOR_MASK))
+#define GET_MAJOR(tlv_type) ((tlv_type) >> MAJOR_POS)
+#define GET_MINOR(tlv_type) ((tlv_type) &  MINOR_MASK)
+
+/* Initial attestation specific macros */
+#define MODULE_POS 6               /* 6 bit */
+#define CLAIM_MASK 0x3F            /* 6 bit */
+#define MEASUREMENT_CLAIM_POS 3    /* 3 bit */
+
+#define GET_IAS_MODULE(tlv_type) (GET_MINOR(tlv_type) >> MODULE_POS)
+#define GET_IAS_CLAIM(tlv_type)  (GET_MINOR(tlv_type)  & CLAIM_MASK)
+#define SET_IAS_MINOR(sw_module, claim) (((sw_module) << 6) | (claim))
+
+#define GET_IAS_MEASUREMENT_CLAIM(ias_claim) ((ias_claim) >> \
+                                              MEASUREMENT_CLAIM_POS)
+
+/* Magic value which marks the beginning of shared data area in memory */
+#define SHARED_DATA_TLV_INFO_MAGIC    0x2016
+
+/**
+ * Shared data TLV header.  All fields in little endian.
+ *
+ *    -----------------------------------
+ *    | tlv_magic(16) | tlv_tot_len(16) |
+ *    -----------------------------------
+ */
+struct shared_data_tlv_header {
+    uint16_t tlv_magic;
+    uint16_t tlv_tot_len; /* size of whole TLV area (including this header) */
+};
+
+#define SHARED_DATA_HEADER_SIZE sizeof(struct shared_data_tlv_header)
+
+/**
+ * Shared data TLV entry header format. All fields in little endian.
+ *
+ *    -------------------------------
+ *    | tlv_type(16) |  tlv_len(16) |
+ *    -------------------------------
+ *    |         Raw data            |
+ *    -------------------------------
+ */
+struct shared_data_tlv_entry {
+    uint16_t tlv_type;
+    uint16_t tlv_len; /* size of single TLV entry (including this header). */
+};
+
+/**
+ * \struct tfm_boot_data
+ *
+ * \brief Store the data for the runtime SW
+ */
+struct tfm_boot_data {
+    struct shared_data_tlv_header header;
+    uint8_t data[];
+};
+
+#define SHARED_DATA_ENTRY_HEADER_SIZE sizeof(struct shared_data_tlv_entry)
+#define SHARED_DATA_ENTRY_SIZE(size) (size + SHARED_DATA_ENTRY_HEADER_SIZE)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __TFM_BOOT_STATUS_H__ */