diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt
new file mode 100644
index 0000000..acf6c56
--- /dev/null
+++ b/interface/CMakeLists.txt
@@ -0,0 +1,119 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2020, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+cmake_minimum_required(VERSION 3.13)
+cmake_policy(SET CMP0076 NEW)
+cmake_policy(SET CMP0079 NEW)
+
+
+if (TFM_MULTI_CORE_TOPOLOGY)
+    include(${CMAKE_SOURCE_DIR}/platform/ext/target/${TFM_PLATFORM}/preload_ns.cmake)
+    # The platform target is created in this directory/file so that it has the
+    # same settings as the main ns target.
+    add_library(platform_ns STATIC)
+endif()
+
+###################### PSA interface (header only) #############################
+
+add_library(psa_interface INTERFACE)
+
+target_include_directories(psa_interface
+    INTERFACE
+        ${CMAKE_CURRENT_SOURCE_DIR}/include
+        ${CMAKE_BINARY_DIR}/generated/interface/include
+        ${CMAKE_CURRENT_SOURCE_DIR}/include/os_wrapper
+)
+
+# PSA interface files are generated from a template
+add_dependencies(psa_interface
+    tfm_generated_files
+)
+
+target_link_libraries(psa_interface
+    INTERFACE
+        tfm_partition_defs
+)
+
+target_compile_definitions(psa_interface
+    INTERFACE
+        $<$<BOOL:${TFM_PSA_API}>:TFM_PSA_API>
+        $<$<BOOL:${TFM_NS_CLIENT_IDENTIFICATION}>:TFM_NS_CLIENT_IDENTIFICATION>
+        $<$<BOOL:${CONFIG_TFM_ENABLE_CTX_MGMT}>:CONFIG_TFM_ENABLE_CTX_MGMT>
+        $<$<BOOL:${TFM_ISOLATION_LEVEL}>:TFM_LVL=${TFM_ISOLATION_LEVEL}>
+        $<$<VERSION_GREATER:${TFM_ISOLATION_LEVEL},1>:CONFIG_TFM_ENABLE_MEMORY_PROTECT>
+        $<$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>:TFM_MULTI_CORE_TOPOLOGY>
+)
+
+###################### PSA api (S lib) #########################################
+
+target_sources(tfm_secure_api
+    INTERFACE
+        $<$<BOOL:${TFM_PSA_API}>:${CMAKE_CURRENT_SOURCE_DIR}/src/psa/psa_client.c>
+        $<$<BOOL:${TFM_PSA_API}>:${CMAKE_CURRENT_SOURCE_DIR}/src/psa/psa_service.c>
+        $<$<BOOL:${TFM_PSA_API}>:${CMAKE_CURRENT_SOURCE_DIR}/src/psa/psa_lifecycle.c>
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/log/tfm_log_raw.c
+)
+
+###################### PSA api (NS lib) ########################################
+
+add_library(psa_api_ns STATIC)
+
+target_sources(psa_api_ns
+    PRIVATE
+        $<$<BOOL:${TFM_NS_CLIENT_IDENTIFICATION}>:src/tfm_nspm_svc_handler.c>
+        $<$<BOOL:${TFM_NS_CLIENT_IDENTIFICATION}>:src/tfm_nspm_api.c>
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/log/tfm_log_raw.c
+)
+
+if (${TFM_PSA_API})
+    target_sources(psa_api_ns PRIVATE
+        $<$<BOOL:${TFM_PARTITION_PLATFORM}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_platform_ipc_api.c>
+        $<$<BOOL:${TFM_PARTITION_PROTECTED_STORAGE}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_ps_ipc_api.c>
+        $<$<BOOL:${TFM_PARTITION_INTERNAL_TRUSTED_STORAGE}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_its_ipc_api.c>
+        $<$<BOOL:${TFM_PARTITION_CRYPTO}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_crypto_ipc_api.c>
+        $<$<BOOL:${TFM_PARTITION_INITIAL_ATTESTATION}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_initial_attestation_ipc_api.c>
+    )
+
+    if (TFM_MULTI_CORE_TOPOLOGY)
+        target_sources(psa_api_ns PRIVATE
+            src/tfm_ns_mailbox.c
+            src/tfm_multi_core_api.c
+            src/tfm_multi_core_psa_ns_api.c
+        )
+    else()
+        target_sources(psa_api_ns PRIVATE
+           src/tfm_ns_interface.c
+           src/tfm_psa_ns_api.c
+        )
+    endif()
+else()
+    target_sources(psa_api_ns PRIVATE
+        $<$<BOOL:${TFM_PARTITION_PLATFORM}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_platform_func_api.c>
+        $<$<BOOL:${TFM_PARTITION_AUDIT_LOG}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_audit_func_api.c>
+        $<$<BOOL:${TFM_PARTITION_PROTECTED_STORAGE}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_ps_func_api.c>
+        $<$<BOOL:${TFM_PARTITION_INTERNAL_TRUSTED_STORAGE}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_its_func_api.c>
+        $<$<BOOL:${TFM_PARTITION_CRYPTO}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_crypto_func_api.c>
+        $<$<BOOL:${TFM_PARTITION_INITIAL_ATTESTATION}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_initial_attestation_func_api.c>
+        src/tfm_psa_ns_api.c
+    )
+    if (NOT TFM_MULTI_CORE_TOPOLOGY)
+        target_sources(psa_api_ns PRIVATE
+           src/tfm_ns_interface.c
+        )
+    endif()
+
+endif()
+
+target_link_libraries(psa_api_ns
+    PUBLIC
+        psa_interface
+    PRIVATE
+        platform_ns
+        # CMSIS is currently only required to provide the NS client IDs. In
+        # future, this should probably be made more OS agnostic
+        $<$<BOOL:${TFM_NS_CLIENT_IDENTIFICATION}>:CMSIS_5_tfm_ns>
+)
diff --git a/interface/include/psa_manifest/pid.h b/interface/include/psa_manifest/pid.h
deleted file mode 100644
index 1f690bd..0000000
--- a/interface/include/psa_manifest/pid.h
+++ /dev/null
@@ -1,38 +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 __PSA_MANIFEST_PID_H__
-#define __PSA_MANIFEST_PID_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define TFM_SP_PS                                                      (256)
-#define TFM_SP_ITS                                                     (257)
-#define TFM_SP_AUDIT_LOG                                               (258)
-#define TFM_SP_CRYPTO                                                  (259)
-#define TFM_SP_PLATFORM                                                (260)
-#define TFM_SP_INITIAL_ATTESTATION                                     (261)
-#define TFM_SP_CORE_TEST                                               (262)
-#define TFM_SP_CORE_TEST_2                                             (263)
-#define TFM_SP_SECURE_TEST_PARTITION                                   (264)
-#define TFM_SP_IPC_SERVICE_TEST                                        (265)
-#define TFM_SP_IPC_CLIENT_TEST                                         (266)
-#define TFM_IRQ_TEST_1                                                 (267)
-#define TFM_SP_PS_TEST                                                 (268)
-#define TFM_SP_SECURE_CLIENT_2                                         (269)
-
-#define TFM_MAX_USER_PARTITIONS                                        (14)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __PSA_MANIFEST_PID_H__ */
diff --git a/interface/include/psa_manifest/sid.h b/interface/include/psa_manifest/sid.h
deleted file mode 100644
index 87d6186..0000000
--- a/interface/include/psa_manifest/sid.h
+++ /dev/null
@@ -1,141 +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 __PSA_MANIFEST_SID_H__
-#define __PSA_MANIFEST_SID_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/******** TFM_SP_PS ********/
-#define TFM_PS_SET_SID                                             (0x00000060U)
-#define TFM_PS_SET_VERSION                                         (1U)
-#define TFM_PS_GET_SID                                             (0x00000061U)
-#define TFM_PS_GET_VERSION                                         (1U)
-#define TFM_PS_GET_INFO_SID                                        (0x00000062U)
-#define TFM_PS_GET_INFO_VERSION                                    (1U)
-#define TFM_PS_REMOVE_SID                                          (0x00000063U)
-#define TFM_PS_REMOVE_VERSION                                      (1U)
-#define TFM_PS_GET_SUPPORT_SID                                     (0x00000064U)
-#define TFM_PS_GET_SUPPORT_VERSION                                 (1U)
-
-/******** TFM_SP_ITS ********/
-#define TFM_ITS_SET_SID                                            (0x00000070U)
-#define TFM_ITS_SET_VERSION                                        (1U)
-#define TFM_ITS_GET_SID                                            (0x00000071U)
-#define TFM_ITS_GET_VERSION                                        (1U)
-#define TFM_ITS_GET_INFO_SID                                       (0x00000072U)
-#define TFM_ITS_GET_INFO_VERSION                                   (1U)
-#define TFM_ITS_REMOVE_SID                                         (0x00000073U)
-#define TFM_ITS_REMOVE_VERSION                                     (1U)
-
-/******** TFM_SP_CRYPTO ********/
-#define TFM_CRYPTO_SID                                             (0x00000080U)
-#define TFM_CRYPTO_VERSION                                         (1U)
-
-/******** TFM_SP_PLATFORM ********/
-#define TFM_SP_PLATFORM_SYSTEM_RESET_SID                           (0x00000040U)
-#define TFM_SP_PLATFORM_SYSTEM_RESET_VERSION                       (1U)
-#define TFM_SP_PLATFORM_IOCTL_SID                                  (0x00000041U)
-#define TFM_SP_PLATFORM_IOCTL_VERSION                              (1U)
-#define TFM_SP_PLATFORM_NV_COUNTER_SID                             (0x00000042U)
-#define TFM_SP_PLATFORM_NV_COUNTER_VERSION                         (1U)
-
-/******** TFM_SP_INITIAL_ATTESTATION ********/
-#define TFM_ATTEST_GET_TOKEN_SID                                   (0x00000020U)
-#define TFM_ATTEST_GET_TOKEN_VERSION                               (1U)
-#define TFM_ATTEST_GET_TOKEN_SIZE_SID                              (0x00000021U)
-#define TFM_ATTEST_GET_TOKEN_SIZE_VERSION                          (1U)
-#define TFM_ATTEST_GET_PUBLIC_KEY_SID                              (0x00000022U)
-#define TFM_ATTEST_GET_PUBLIC_KEY_VERSION                          (1U)
-
-/******** TFM_SP_CORE_TEST ********/
-#define SPM_CORE_TEST_INIT_SUCCESS_SID                             (0x0000F020U)
-#define SPM_CORE_TEST_INIT_SUCCESS_VERSION                         (1U)
-#define SPM_CORE_TEST_DIRECT_RECURSION_SID                         (0x0000F021U)
-#define SPM_CORE_TEST_DIRECT_RECURSION_VERSION                     (1U)
-#define SPM_CORE_TEST_SS_TO_SS_SID                                 (0x0000F024U)
-#define SPM_CORE_TEST_SS_TO_SS_VERSION                             (1U)
-#define SPM_CORE_TEST_SS_TO_SS_BUFFER_SID                          (0x0000F025U)
-#define SPM_CORE_TEST_SS_TO_SS_BUFFER_VERSION                      (1U)
-#define SPM_CORE_TEST_OUTVEC_WRITE_SID                             (0x0000F026U)
-#define SPM_CORE_TEST_OUTVEC_WRITE_VERSION                         (1U)
-#define SPM_CORE_TEST_PERIPHERAL_ACCESS_SID                        (0x0000F027U)
-#define SPM_CORE_TEST_PERIPHERAL_ACCESS_VERSION                    (1U)
-#define SPM_CORE_TEST_GET_CALLER_CLIENT_ID_SID                     (0x0000F028U)
-#define SPM_CORE_TEST_GET_CALLER_CLIENT_ID_VERSION                 (1U)
-#define SPM_CORE_TEST_SPM_REQUEST_SID                              (0x0000F029U)
-#define SPM_CORE_TEST_SPM_REQUEST_VERSION                          (1U)
-#define SPM_CORE_TEST_BLOCK_SID                                    (0x0000F02AU)
-#define SPM_CORE_TEST_BLOCK_VERSION                                (1U)
-#define SPM_CORE_TEST_NS_THREAD_SID                                (0x0000F02BU)
-#define SPM_CORE_TEST_NS_THREAD_VERSION                            (1U)
-
-/******** TFM_SP_CORE_TEST_2 ********/
-#define SPM_CORE_TEST_2_SLAVE_SERVICE_SID                          (0x0000F040U)
-#define SPM_CORE_TEST_2_SLAVE_SERVICE_VERSION                      (1U)
-#define SPM_CORE_TEST_2_CHECK_CALLER_CLIENT_ID_SID                 (0x0000F041U)
-#define SPM_CORE_TEST_2_CHECK_CALLER_CLIENT_ID_VERSION             (1U)
-#define SPM_CORE_TEST_2_GET_EVERY_SECOND_BYTE_SID                  (0x0000F042U)
-#define SPM_CORE_TEST_2_GET_EVERY_SECOND_BYTE_VERSION              (1U)
-#define SPM_CORE_TEST_2_INVERT_SID                                 (0x0000F043U)
-#define SPM_CORE_TEST_2_INVERT_VERSION                             (1U)
-#define SPM_CORE_TEST_2_PREPARE_TEST_SCENARIO_SID                  (0x0000F044U)
-#define SPM_CORE_TEST_2_PREPARE_TEST_SCENARIO_VERSION              (1U)
-#define SPM_CORE_TEST_2_EXECUTE_TEST_SCENARIO_SID                  (0x0000F045U)
-#define SPM_CORE_TEST_2_EXECUTE_TEST_SCENARIO_VERSION              (1U)
-
-/******** TFM_SP_SECURE_TEST_PARTITION ********/
-#define TFM_SECURE_CLIENT_SFN_RUN_TESTS_SID                        (0x0000F000U)
-#define TFM_SECURE_CLIENT_SFN_RUN_TESTS_VERSION                    (1U)
-
-/******** TFM_SP_IPC_SERVICE_TEST ********/
-#define IPC_SERVICE_TEST_BASIC_SID                                 (0x0000F080U)
-#define IPC_SERVICE_TEST_BASIC_VERSION                             (1U)
-#define IPC_SERVICE_TEST_PSA_ACCESS_APP_MEM_SID                    (0x0000F081U)
-#define IPC_SERVICE_TEST_PSA_ACCESS_APP_MEM_VERSION                (1U)
-#define IPC_SERVICE_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SID          (0x0000F082U)
-#define IPC_SERVICE_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_VERSION      (1U)
-#define IPC_SERVICE_TEST_APP_ACCESS_PSA_MEM_SID                    (0x0000F083U)
-#define IPC_SERVICE_TEST_APP_ACCESS_PSA_MEM_VERSION                (1U)
-#define IPC_SERVICE_TEST_CLIENT_PROGRAMMER_ERROR_SID               (0x0000F084U)
-#define IPC_SERVICE_TEST_CLIENT_PROGRAMMER_ERROR_VERSION           (1U)
-
-/******** TFM_SP_IPC_CLIENT_TEST ********/
-#define IPC_CLIENT_TEST_BASIC_SID                                  (0x0000F060U)
-#define IPC_CLIENT_TEST_BASIC_VERSION                              (1U)
-#define IPC_CLIENT_TEST_PSA_ACCESS_APP_MEM_SID                     (0x0000F061U)
-#define IPC_CLIENT_TEST_PSA_ACCESS_APP_MEM_VERSION                 (1U)
-#define IPC_CLIENT_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SID           (0x0000F062U)
-#define IPC_CLIENT_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_VERSION       (1U)
-#define IPC_CLIENT_TEST_APP_ACCESS_PSA_MEM_SID                     (0x0000F063U)
-#define IPC_CLIENT_TEST_APP_ACCESS_PSA_MEM_VERSION                 (1U)
-#define IPC_CLIENT_TEST_MEM_CHECK_SID                              (0x0000F064U)
-#define IPC_CLIENT_TEST_MEM_CHECK_VERSION                          (1U)
-
-/******** TFM_IRQ_TEST_1 ********/
-#define SPM_CORE_IRQ_TEST_1_PREPARE_TEST_SCENARIO_SID              (0x0000F0A0U)
-#define SPM_CORE_IRQ_TEST_1_PREPARE_TEST_SCENARIO_VERSION          (1U)
-#define SPM_CORE_IRQ_TEST_1_EXECUTE_TEST_SCENARIO_SID              (0x0000F0A1U)
-#define SPM_CORE_IRQ_TEST_1_EXECUTE_TEST_SCENARIO_VERSION          (1U)
-
-/******** TFM_SP_PS_TEST ********/
-#define TFM_PS_TEST_PREPARE_SID                                    (0x0000F0C0U)
-#define TFM_PS_TEST_PREPARE_VERSION                                (1U)
-
-/******** TFM_SP_SECURE_CLIENT_2 ********/
-#define TFM_SECURE_CLIENT_2_SID                                    (0x0000F0E0U)
-#define TFM_SECURE_CLIENT_2_VERSION                                (1U)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __PSA_MANIFEST_SID_H__ */
diff --git a/interface/include/tfm_veneers.h b/interface/include/tfm_veneers.h
deleted file mode 100644
index 655d679..0000000
--- a/interface/include/tfm_veneers.h
+++ /dev/null
@@ -1,176 +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! ***********/
-
-#ifndef __TFM_VENEERS_H__
-#define __TFM_VENEERS_H__
-
-#include "tfm_api.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-/******** TFM_SP_PS ********/
-psa_status_t tfm_tfm_ps_set_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_ps_get_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_ps_get_info_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_ps_remove_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_ps_get_support_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-/******** TFM_SP_ITS ********/
-psa_status_t tfm_tfm_its_set_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_its_get_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_its_get_info_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_its_remove_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-/******** TFM_SP_AUDIT_LOG ********/
-psa_status_t tfm_audit_core_retrieve_record_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_audit_core_add_record_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_audit_core_get_info_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_audit_core_get_record_info_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_audit_core_delete_record_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-/******** TFM_SP_CRYPTO ********/
-psa_status_t tfm_tfm_crypto_get_key_attributes_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_open_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_close_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_reset_key_attributes_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_import_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_destroy_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_export_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_export_public_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_copy_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_compute_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_compare_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_update_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_verify_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_clone_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_compute_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_verify_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_sign_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_verify_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_update_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_sign_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_verify_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_encrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_decrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_encrypt_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_decrypt_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_generate_iv_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_set_iv_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_update_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_encrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_decrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_encrypt_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_decrypt_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_generate_nonce_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_set_nonce_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_set_lengths_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_update_ad_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_update_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_verify_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_sign_hash_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_verify_hash_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_asymmetric_encrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_asymmetric_decrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_get_capacity_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_set_capacity_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_input_bytes_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_input_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_key_agreement_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_output_bytes_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_output_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_raw_key_agreement_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_generate_random_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_generate_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-/******** TFM_SP_PLATFORM ********/
-psa_status_t tfm_platform_sp_system_reset_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_platform_sp_ioctl_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_platform_sp_nv_counter_read_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_platform_sp_nv_counter_increment_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-/******** TFM_SP_INITIAL_ATTESTATION ********/
-psa_status_t tfm_initial_attest_get_token_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_initial_attest_get_token_size_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_initial_attest_get_public_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-/******** TFM_SP_CORE_TEST ********/
-psa_status_t tfm_spm_core_test_sfn_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_core_test_sfn_init_success_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_core_test_sfn_direct_recursion_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-/******** TFM_SP_CORE_TEST_2 ********/
-psa_status_t tfm_spm_core_test_2_slave_service_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_core_test_2_sfn_invert_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_core_test_2_check_caller_client_id_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_core_test_2_get_every_second_byte_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_core_test_2_prepare_test_scenario_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_core_test_2_execute_test_scenario_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-/******** TFM_SP_SECURE_TEST_PARTITION ********/
-psa_status_t tfm_tfm_secure_client_service_sfn_run_tests_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#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 tfm_spm_irq_test_1_prepare_test_scenario_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_irq_test_1_execute_test_scenario_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-/******** TFM_SP_PS_TEST ********/
-psa_status_t tfm_tfm_ps_test_prepare_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-/******** TFM_SP_SECURE_CLIENT_2 ********/
-psa_status_t tfm_tfm_secure_client_2_call_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __TFM_VENEERS_H__ */
diff --git a/interface/src/log/tfm_log_raw.c b/interface/src/log/tfm_log_raw.c
index 1afb05b..f94d860 100644
--- a/interface/src/log/tfm_log_raw.c
+++ b/interface/src/log/tfm_log_raw.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019, Arm Limited. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -9,7 +9,7 @@
 #include <stddef.h>
 #include <stdint.h>
 #include "log/tfm_log_raw.h"
-#include "uart_stdout.h"
+#include "common/uart_stdout.h"
 
 #define PRINT_BUFF_SIZE 32
 #define NUM_BUFF_SIZE 12
