Core: fix NSPM default client ID assignment
If TFM_NS_CLIENT_IDENTIFICATION build option is disabled,
always use default NS client id of -1
Change-Id: I565bafd7eac9c30ec4e027ff9925ca483a875d9f
Signed-off-by: Miklos Balint <miklos.balint@arm.com>
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 8b49abb..efc979f 100755
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -47,11 +47,18 @@
"${INTERFACE_DIR}/src/tfm_audit_api.c"
"${INTERFACE_DIR}/src/tfm_crypto_api.c"
"${INTERFACE_DIR}/src/tfm_platform_api.c"
- "${INTERFACE_DIR}/src/tfm_nspm_svc_handler.c"
- "${INTERFACE_DIR}/src/tfm_nspm_api.c"
"${INTERFACE_DIR}/src/tfm_ns_lock_rtx.c"
)
+if (NOT DEFINED TFM_NS_CLIENT_IDENTIFICATION)
+ message(FATAL_ERROR "Incomplete build configuration: TFM_NS_CLIENT_IDENTIFICATION is undefined.")
+elseif (TFM_NS_CLIENT_IDENTIFICATION)
+ list(APPEND NS_APP_SRC
+ "${INTERFACE_DIR}/src/tfm_nspm_svc_handler.c"
+ "${INTERFACE_DIR}/src/tfm_nspm_api.c"
+ )
+endif()
+
set(BUILD_CMSIS_CORE On)
set(BUILD_RETARGET On)
set(BUILD_NATIVE_DRIVERS On)
diff --git a/app/main_ns.c b/app/main_ns.c
index c3ba83b..f430df7 100644
--- a/app/main_ns.c
+++ b/app/main_ns.c
@@ -38,7 +38,9 @@
#define X(SVC_ENUM, SVC_HANDLER) (void*)SVC_HANDLER,
/* SVC API for Services */
+#ifdef TFM_NS_CLIENT_IDENTIFICATION
LIST_SVC_NSPM
+#endif
#undef X
diff --git a/interface/include/tfm_ns_svc.h b/interface/include/tfm_ns_svc.h
index 794cc5c..0399af9 100644
--- a/interface/include/tfm_ns_svc.h
+++ b/interface/include/tfm_ns_svc.h
@@ -48,7 +48,9 @@
#define X(SVC_ENUM, SVC_HANDLER) SVC_ENUM,
/* SVC API for Services */
+#ifdef TFM_NS_CLIENT_IDENTIFICATION
LIST_SVC_NSPM
+#endif
#undef X
diff --git a/secure_fw/CMakeLists.txt b/secure_fw/CMakeLists.txt
index 785bc74..865fa24 100644
--- a/secure_fw/CMakeLists.txt
+++ b/secure_fw/CMakeLists.txt
@@ -76,10 +76,18 @@
embedded_set_target_compile_defines(TARGET ${PROJECT_OBJ_LIB} LANGUAGE C DEFINES TFM_NVCOUNTERS_ENABLE APPEND)
endif()
-if(CORE_TEST)
+if (NOT DEFINED CORE_TEST)
+ message(FATAL_ERROR "Incomplete build configuration: CORE_TEST is undefined.")
+elseif(CORE_TEST)
embedded_set_target_compile_defines(TARGET ${PROJECT_OBJ_LIB} LANGUAGE C DEFINES TFM_CORE_DEBUG TFM_PARTITION_TEST_CORE APPEND)
endif()
+if (NOT DEFINED TFM_NS_CLIENT_IDENTIFICATION)
+ message(FATAL_ERROR "Incomplete build configuration: TFM_NS_CLIENT_IDENTIFICATION is undefined.")
+elseif (TFM_NS_CLIENT_IDENTIFICATION)
+ target_compile_definitions(${PROJECT_OBJ_LIB} PRIVATE TFM_NS_CLIENT_IDENTIFICATION)
+endif()
+
#Set include directories
embedded_target_include_directories(TARGET ${PROJECT_OBJ_LIB} PATH ${TFM_ROOT_DIR} ABSOLUTE APPEND)
diff --git a/secure_fw/core/tfm_nspm.c b/secure_fw/core/tfm_nspm.c
index e4e3a18..8912b04 100644
--- a/secure_fw/core/tfm_nspm.c
+++ b/secure_fw/core/tfm_nspm.c
@@ -14,7 +14,7 @@
#endif
#define INVALID_CLIENT_ID 0
-#define CLIENT_ID_RANGE_START ((int32_t)-1)
+#define DEFAULT_NS_CLIENT_ID ((int32_t)-1)
#define INVALID_NS_CLIENT_IDX (-1)
#define DEFAULT_NS_CLIENT_IDX 0
@@ -32,13 +32,17 @@
static int get_next_ns_client_id()
{
- static int32_t next_ns_client_id = CLIENT_ID_RANGE_START;
+#ifdef TFM_NS_CLIENT_IDENTIFICATION
+ static int32_t next_ns_client_id = DEFAULT_NS_CLIENT_ID;
if (next_ns_client_id > 0)
{
- next_ns_client_id = CLIENT_ID_RANGE_START;
+ next_ns_client_id = DEFAULT_NS_CLIENT_ID;
}
return next_ns_client_id--;
+#else
+ return DEFAULT_NS_CLIENT_ID;
+#endif
}
void tfm_nspm_configure_clients(void)
@@ -261,6 +265,7 @@
return 1U; // Success
}
+#ifdef TFM_NS_CLIENT_IDENTIFICATION
__attribute__((cmse_nonsecure_entry))
enum tfm_status_e tfm_register_client_id (int32_t ns_client_id)
{
@@ -294,3 +299,4 @@
return TFM_SUCCESS;
}
+#endif