Core: Move memory primitives to separate file

Reduce the dependencies of the services on various header files.

Change-Id: Iaf9c64bc830609d7497fb4a0b825a303dded4a04
Signed-off-by: Tamas Ban <tamas.ban@arm.com>
diff --git a/lib/t_cose/src/t_cose_psa_crypto.c b/lib/t_cose/src/t_cose_psa_crypto.c
index 5c3762b..89c8fa3 100644
--- a/lib/t_cose/src/t_cose_psa_crypto.c
+++ b/lib/t_cose/src/t_cose_psa_crypto.c
@@ -14,7 +14,7 @@
 #include "attestation_key.h"
 #include "tfm_plat_defs.h"
 #include "tfm_plat_crypto_keys.h"
-#include "secure_utilities.h"
+#include "tfm_memory_utils.h"
 #include "psa_crypto.h"
 
 /**
diff --git a/secure_fw/core/secure_utilities.h b/secure_fw/core/secure_utilities.h
index 32030fd..3501a73 100644
--- a/secure_fw/core/secure_utilities.h
+++ b/secure_fw/core/secure_utilities.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -10,7 +10,6 @@
 
 #include "cmsis_compiler.h"
 #include "tfm_svc.h"
-#include "string.h"
 
 #define EXC_RETURN_INDICATOR                    (0xF << 28)
 #define EXC_RETURN_SECURITY_STACK_STATUS_MASK   (0x3 << 5)
@@ -104,27 +103,4 @@
     __asm("ISB");
 }
 
-/* FIXME: The following functions are wrappers around standard C library
- *        functions: memcpy, memcmp, memset
- *        In long term standard C library might be removed from TF-M project or
- *        replaced with a secure implementation due to security concerns.
- */
-__attribute__ ((always_inline)) __STATIC_INLINE
-void tfm_memcpy(void *dest, const void *src, uint32_t size)
-{
-    memcpy(dest, src, size);
-}
-
-__attribute__ ((always_inline)) __STATIC_INLINE
-int32_t tfm_memcmp(const void * ptr1, const void * ptr2, size_t num)
-{
-    return (memcmp(ptr1, ptr2, num));
-}
-
-__attribute__ ((always_inline)) __STATIC_INLINE
-void * tfm_memset(void * ptr, int value, size_t num)
-{
-    return (memset(ptr, value, num));
-}
-
 #endif /* __SECURE_UTILITIES_H__ */
diff --git a/secure_fw/core/tfm_boot_data.c b/secure_fw/core/tfm_boot_data.c
index db40768..e742072 100644
--- a/secure_fw/core/tfm_boot_data.c
+++ b/secure_fw/core/tfm_boot_data.c
@@ -7,7 +7,7 @@
 
 #include <stdint.h>
 #include "bl2/include/tfm_boot_status.h"
-#include "secure_utilities.h"
+#include "tfm_memory_utils.h"
 #include "tfm_internal.h"
 #include "tfm_api.h"
 #include "flash_layout.h"
diff --git a/secure_fw/core/tfm_handler.c b/secure_fw/core/tfm_handler.c
index 88ac443..ee59ea1 100644
--- a/secure_fw/core/tfm_handler.c
+++ b/secure_fw/core/tfm_handler.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -16,6 +16,7 @@
 #include "region_defs.h"
 #include "tfm_api.h"
 #include "tfm_internal.h"
+#include "tfm_memory_utils.h"
 
 /* This SVC handler is called when a secure partition requests access to a
  * buffer area
diff --git a/secure_fw/core/tfm_memory_utils.h b/secure_fw/core/tfm_memory_utils.h
new file mode 100644
index 0000000..150e3cc
--- /dev/null
+++ b/secure_fw/core/tfm_memory_utils.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2019, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#ifndef __TFM_MEMORY_UTILS_H__
+#define __TFM_MEMORY_UTILS_H__
+
+#include <string.h>
+#include "cmsis_compiler.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FIXME: The following functions are wrappers around standard C library
+ *        functions: memcpy, memcmp, memset
+ *        In long term standard C library might be removed from TF-M project or
+ *        replaced with a secure implementation due to security concerns.
+ */
+__attribute__ ((always_inline)) __STATIC_INLINE
+void *tfm_memcpy(void *dest, const void *src, size_t num)
+{
+    return (memcpy(dest, src, num));
+}
+
+__attribute__ ((always_inline)) __STATIC_INLINE
+int tfm_memcmp(const void *ptr1, const void *ptr2, size_t num)
+{
+    return (memcmp(ptr1, ptr2, num));
+}
+
+__attribute__ ((always_inline)) __STATIC_INLINE
+void *tfm_memset(void *ptr, int value, size_t num)
+{
+    return (memset(ptr, value, num));
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __TFM_MEMORY_UTILS_H__ */
diff --git a/secure_fw/services/crypto/crypto_alloc.c b/secure_fw/services/crypto/crypto_alloc.c
index 627dab7..ede9ba7 100644
--- a/secure_fw/services/crypto/crypto_alloc.c
+++ b/secure_fw/services/crypto/crypto_alloc.c
@@ -13,7 +13,7 @@
 #include "tfm_crypto_api.h"
 
 #include "tfm_crypto_struct.h"
-#include "secure_fw/core/secure_utilities.h"
+#include "secure_fw/core/tfm_memory_utils.h"
 
 /**
  * \brief This value defines the maximum number of simultaneous operations
diff --git a/secure_fw/services/crypto/crypto_key.c b/secure_fw/services/crypto/crypto_key.c
index f2708d5..277ed10 100644
--- a/secure_fw/services/crypto/crypto_key.c
+++ b/secure_fw/services/crypto/crypto_key.c
@@ -12,7 +12,7 @@
 #include "crypto_utils.h"
 #include "psa_crypto.h"
 #include "tfm_crypto_defs.h"
-#include "secure_fw/core/secure_utilities.h"
+#include "secure_fw/core/tfm_memory_utils.h"
 
 /**
  * \brief This is the default value of maximum number of simultaneous
diff --git a/secure_fw/services/crypto/crypto_mac.c b/secure_fw/services/crypto/crypto_mac.c
index 45a7eae..ec49a11 100644
--- a/secure_fw/services/crypto/crypto_mac.c
+++ b/secure_fw/services/crypto/crypto_mac.c
@@ -5,7 +5,7 @@
  *
  */
 
-#include "secure_fw/core/secure_utilities.h"
+#include "secure_fw/core/tfm_memory_utils.h"
 #include "tfm_crypto_defs.h"
 
 #include "psa_crypto.h"
diff --git a/secure_fw/services/initial_attestation/attestation_crypto_stub.c b/secure_fw/services/initial_attestation/attestation_crypto_stub.c
index 8731466..5b1df81 100644
--- a/secure_fw/services/initial_attestation/attestation_crypto_stub.c
+++ b/secure_fw/services/initial_attestation/attestation_crypto_stub.c
@@ -5,7 +5,7 @@
  *
  */
 
-#include "secure_utilities.h"
+#include "tfm_memory_utils.h"
 #include "tfm_crypto_defs.h"
 #include "psa_crypto.h"
 
diff --git a/secure_fw/services/initial_attestation/tfm_attestation_secure_api.c b/secure_fw/services/initial_attestation/tfm_attestation_secure_api.c
index 14e5f3f..acd9878 100644
--- a/secure_fw/services/initial_attestation/tfm_attestation_secure_api.c
+++ b/secure_fw/services/initial_attestation/tfm_attestation_secure_api.c
@@ -7,7 +7,7 @@
 
 #include "psa_initial_attestation_api.h"
 #include "tfm_veneers.h"
-#include "secure_utilities.h"
+#include "tfm_memory_utils.h"
 #include "tfm_client.h"
 #include "tfm_secure_api.h"
 #include <string.h>
diff --git a/secure_fw/spm/spm_api.c b/secure_fw/spm/spm_api.c
index 1e9b99c..efc4306 100644
--- a/secure_fw/spm/spm_api.c
+++ b/secure_fw/spm/spm_api.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -11,7 +11,7 @@
 #include <string.h>
 #include "spm_api.h"
 #include "platform/include/tfm_spm_hal.h"
-#include "secure_utilities.h"
+#include "tfm_memory_utils.h"
 #include "spm_db_setup.h"
 #include "tfm_internal.h"
 #include "tfm_api.h"
diff --git a/test/suites/attestation/non_secure/attestation_ns_interface_testsuite.c b/test/suites/attestation/non_secure/attestation_ns_interface_testsuite.c
index 7c2e28f..1df5f85 100644
--- a/test/suites/attestation/non_secure/attestation_ns_interface_testsuite.c
+++ b/test/suites/attestation/non_secure/attestation_ns_interface_testsuite.c
@@ -10,7 +10,7 @@
 #include "secure_fw/services/initial_attestation/attestation.h"
 #include "../attestation_tests_common.h"
 #include "bl2/include/tfm_boot_status.h"
-#include "secure_utilities.h"
+#include "tfm_memory_utils.h"
 #include "platform/include/tfm_plat_device_id.h"
 #include "platform/include/tfm_plat_boot_seed.h"
 #include "tfm_api.h"
diff --git a/test/suites/sst/secure/psa_ps_s_interface_testsuite.c b/test/suites/sst/secure/psa_ps_s_interface_testsuite.c
index f32111b..2227cb7 100644
--- a/test/suites/sst/secure/psa_ps_s_interface_testsuite.c
+++ b/test/suites/sst/secure/psa_ps_s_interface_testsuite.c
@@ -11,7 +11,7 @@
 #include <string.h>
 
 #include "s_test_helpers.h"
-#include "secure_fw/core/secure_utilities.h"
+#include "secure_fw/core/tfm_memory_utils.h"
 #include "psa_protected_storage.h"
 #include "test/framework/test_framework_helpers.h"
 
diff --git a/test/suites/sst/secure/psa_ps_s_reliability_testsuite.c b/test/suites/sst/secure/psa_ps_s_reliability_testsuite.c
index f4f6b01..e08b473 100644
--- a/test/suites/sst/secure/psa_ps_s_reliability_testsuite.c
+++ b/test/suites/sst/secure/psa_ps_s_reliability_testsuite.c
@@ -11,7 +11,7 @@
 #include <string.h>
 
 #include "psa_protected_storage.h"
-#include "secure_fw/core/secure_utilities.h"
+#include "secure_fw/core/tfm_memory_utils.h"
 #include "s_test_helpers.h"
 #include "test/framework/test_framework_helpers.h"
 
diff --git a/test/suites/sst/secure/sst_rollback_protection_testsuite.c b/test/suites/sst/secure/sst_rollback_protection_testsuite.c
index 682f909..81fa35f 100644
--- a/test/suites/sst/secure/sst_rollback_protection_testsuite.c
+++ b/test/suites/sst/secure/sst_rollback_protection_testsuite.c
@@ -12,7 +12,7 @@
 
 #include "nv_counters/test_sst_nv_counters.h"
 #include "psa_protected_storage.h"
-#include "secure_fw/core/secure_utilities.h"
+#include "secure_fw/core/tfm_memory_utils.h"
 #include "s_test_helpers.h"
 
 /* This include is required to expose the sst_system_prepare function to