Platform: Add secure part section tag for data
This patch adds secure partition section tags. Those tags can be used
to place data, which is not located in the service folder, in the
secure partition area.
Change-Id: I6868376aed8e53f125d305600a82e6395f3dede4
Signed-off-by: Mate Toth-Pal <mate.toth-pal@arm.com>
diff --git a/platform/ext/common/armclang/tfm_common_s.sct b/platform/ext/common/armclang/tfm_common_s.sct
index 318481d..27f539b 100644
--- a/platform/ext/common/armclang/tfm_common_s.sct
+++ b/platform/ext/common/armclang/tfm_common_s.sct
@@ -192,6 +192,8 @@
TFM_SP_STORAGE_DATA +0 ALIGN 32 {
*tfm_storage* (+RW +ZI)
+ *(TFM_SP_STORAGE_ATTR_RW)
+ *(TFM_SP_STORAGE_ATTR_ZI)
}
#if defined (TFM_PSA_API) || (TFM_LVL != 1)
@@ -202,6 +204,8 @@
#ifdef TFM_PARTITION_AUDIT_LOG
TFM_SP_AUDIT_LOG_DATA +0 ALIGN 32 {
*tfm_audit* (+RW +ZI)
+ *(TFM_SP_AUDIT_LOG_ATTR_RW)
+ *(TFM_SP_AUDIT_LOG_ATTR_ZI)
}
#if defined (TFM_PSA_API)
@@ -215,6 +219,8 @@
TFM_SP_CRYPTO_DATA +0 ALIGN 32 {
*tfm_crypto* (+RW +ZI)
+ *(TFM_SP_CRYPTO_ATTR_RW)
+ *(TFM_SP_CRYPTO_ATTR_ZI)
}
#if defined (TFM_PSA_API) || (TFM_LVL != 1)
@@ -225,6 +231,8 @@
#ifdef TFM_PARTITION_PLATFORM
TFM_SP_PLATFORM_DATA +0 ALIGN 32 {
*tfm_platform* (+RW +ZI)
+ *(TFM_SP_PLATFORM_ATTR_RW)
+ *(TFM_SP_PLATFORM_ATTR_ZI)
}
#if defined (TFM_PSA_API)
@@ -238,6 +246,8 @@
TFM_SP_INITIAL_ATTESTATION_DATA +0 ALIGN 32 {
*tfm_attest* (+RW +ZI)
+ *(TFM_SP_INITIAL_ATTESTATION_ATTR_RW)
+ *(TFM_SP_INITIAL_ATTESTATION_ATTR_ZI)
}
#if defined (TFM_PSA_API) || (TFM_LVL != 1)
@@ -256,6 +266,8 @@
*uart_cmsdk_drv* (+RW +ZI)
*secure_suites.* (+RW +ZI)
*attestation_s_interface_testsuite.* (+RW +ZI)
+ *(TFM_SP_SECURE_TEST_PARTITION_ATTR_RW)
+ *(TFM_SP_SECURE_TEST_PARTITION_ATTR_ZI)
}
#if defined (TFM_PSA_API) || (TFM_LVL != 1)
@@ -267,6 +279,8 @@
#ifdef TFM_PARTITION_TEST_CORE_IPC
TFM_SP_IPC_SERVICE_TEST_DATA +0 ALIGN 32 {
*ipc_service_test.* (+RW +ZI)
+ *(TFM_SP_IPC_SERVICE_TEST_ATTR_RW)
+ *(TFM_SP_IPC_SERVICE_TEST_ATTR_ZI)
}
#if defined (TFM_PSA_API) || (TFM_LVL != 1)
@@ -293,6 +307,8 @@
#ifdef TFM_PARTITION_TEST_CORE
TFM_SP_CORE_TEST_DATA +0 ALIGN 32 {
*tfm_ss_core_test.* (+RW +ZI)
+ *(TFM_SP_CORE_TEST_ATTR_RW)
+ *(TFM_SP_CORE_TEST_ATTR_ZI)
}
#if defined (TFM_PSA_API) || (TFM_LVL != 1)
@@ -304,6 +320,8 @@
#ifdef TFM_PARTITION_TEST_CORE
TFM_SP_CORE_TEST_2_DATA +0 ALIGN 32 {
*tfm_ss_core_test_2.* (+RW +ZI)
+ *(TFM_SP_CORE_TEST_2_ATTR_RW)
+ *(TFM_SP_CORE_TEST_2_ATTR_ZI)
}
#if defined (TFM_PSA_API) || (TFM_LVL != 1)
@@ -315,6 +333,8 @@
#ifdef TFM_PARTITION_TEST_CORE_IPC
TFM_SP_IPC_CLIENT_TEST_DATA +0 ALIGN 32 {
*ipc_client_test.* (+RW +ZI)
+ *(TFM_SP_IPC_CLIENT_TEST_ATTR_RW)
+ *(TFM_SP_IPC_CLIENT_TEST_ATTR_ZI)
}
#if defined (TFM_PSA_API) || (TFM_LVL != 1)
diff --git a/platform/ext/common/armclang/tfm_common_s.sct.template b/platform/ext/common/armclang/tfm_common_s.sct.template
index f94a3d7..dc73f09 100644
--- a/platform/ext/common/armclang/tfm_common_s.sct.template
+++ b/platform/ext/common/armclang/tfm_common_s.sct.template
@@ -182,6 +182,8 @@
{{pattern}} (+RW +ZI)
{% endfor %}
{% endif %}
+ *({{manifest.manifest.name}}_ATTR_RW)
+ *({{manifest.manifest.name}}_ATTR_ZI)
}
{% if manifest.attr.tfm_partition_ipc %}
@@ -235,6 +237,8 @@
{{pattern}} (+RW +ZI)
{% endfor %}
{% endif %}
+ *({{manifest.manifest.name}}_ATTR_RW)
+ *({{manifest.manifest.name}}_ATTR_ZI)
}
{% if manifest.attr.tfm_partition_ipc %}
diff --git a/platform/ext/common/gcc/tfm_common_s.ld b/platform/ext/common/gcc/tfm_common_s.ld
index e60cc4e..b287726 100644
--- a/platform/ext/common/gcc/tfm_common_s.ld
+++ b/platform/ext/common/gcc/tfm_common_s.ld
@@ -538,6 +538,7 @@
.TFM_SP_STORAGE_DATA : ALIGN(32)
{
*tfm_storage*:*(.data*)
+ *(TFM_SP_STORAGE_ATTR_RW)
. = ALIGN(32);
} > RAM AT> FLASH
Image$$TFM_SP_STORAGE_DATA$$RW$$Base = ADDR(.TFM_SP_STORAGE_DATA);
@@ -548,6 +549,7 @@
start_of_TFM_SP_STORAGE = .;
*tfm_storage*:*(.bss*)
*tfm_storage*:*(COMMON)
+ *(TFM_SP_STORAGE_ATTR_ZI)
. += (. - start_of_TFM_SP_STORAGE) ? 0 : 4;
. = ALIGN(32);
} > RAM AT> RAM
@@ -568,6 +570,7 @@
.TFM_SP_AUDIT_LOG_DATA : ALIGN(32)
{
*tfm_audit*:*(.data*)
+ *(TFM_SP_AUDIT_LOG_ATTR_RW)
. = ALIGN(32);
} > RAM AT> FLASH
Image$$TFM_SP_AUDIT_LOG_DATA$$RW$$Base = ADDR(.TFM_SP_AUDIT_LOG_DATA);
@@ -578,6 +581,7 @@
start_of_TFM_SP_AUDIT_LOG = .;
*tfm_audit*:*(.bss*)
*tfm_audit*:*(COMMON)
+ *(TFM_SP_AUDIT_LOG_ATTR_ZI)
. += (. - start_of_TFM_SP_AUDIT_LOG) ? 0 : 4;
. = ALIGN(32);
} > RAM AT> RAM
@@ -600,6 +604,7 @@
.TFM_SP_CRYPTO_DATA : ALIGN(32)
{
*tfm_crypto*:*(.data*)
+ *(TFM_SP_CRYPTO_ATTR_RW)
. = ALIGN(32);
} > RAM AT> FLASH
Image$$TFM_SP_CRYPTO_DATA$$RW$$Base = ADDR(.TFM_SP_CRYPTO_DATA);
@@ -610,6 +615,7 @@
start_of_TFM_SP_CRYPTO = .;
*tfm_crypto*:*(.bss*)
*tfm_crypto*:*(COMMON)
+ *(TFM_SP_CRYPTO_ATTR_ZI)
. += (. - start_of_TFM_SP_CRYPTO) ? 0 : 4;
. = ALIGN(32);
} > RAM AT> RAM
@@ -630,6 +636,7 @@
.TFM_SP_PLATFORM_DATA : ALIGN(32)
{
*tfm_platform*:*(.data*)
+ *(TFM_SP_PLATFORM_ATTR_RW)
. = ALIGN(32);
} > RAM AT> FLASH
Image$$TFM_SP_PLATFORM_DATA$$RW$$Base = ADDR(.TFM_SP_PLATFORM_DATA);
@@ -640,6 +647,7 @@
start_of_TFM_SP_PLATFORM = .;
*tfm_platform*:*(.bss*)
*tfm_platform*:*(COMMON)
+ *(TFM_SP_PLATFORM_ATTR_ZI)
. += (. - start_of_TFM_SP_PLATFORM) ? 0 : 4;
. = ALIGN(32);
} > RAM AT> RAM
@@ -662,6 +670,7 @@
.TFM_SP_INITIAL_ATTESTATION_DATA : ALIGN(32)
{
*tfm_attest*:*(.data*)
+ *(TFM_SP_INITIAL_ATTESTATION_ATTR_RW)
. = ALIGN(32);
} > RAM AT> FLASH
Image$$TFM_SP_INITIAL_ATTESTATION_DATA$$RW$$Base = ADDR(.TFM_SP_INITIAL_ATTESTATION_DATA);
@@ -672,6 +681,7 @@
start_of_TFM_SP_INITIAL_ATTESTATION = .;
*tfm_attest*:*(.bss*)
*tfm_attest*:*(COMMON)
+ *(TFM_SP_INITIAL_ATTESTATION_ATTR_ZI)
. += (. - start_of_TFM_SP_INITIAL_ATTESTATION) ? 0 : 4;
. = ALIGN(32);
} > RAM AT> RAM
@@ -700,6 +710,7 @@
*uart_cmsdk_drv*(.data*)
*secure_suites.*(.data*)
*attestation_s_interface_testsuite.*(.data*)
+ *(TFM_SP_SECURE_TEST_PARTITION_ATTR_RW)
. = ALIGN(32);
} > RAM AT> FLASH
Image$$TFM_SP_SECURE_TEST_PARTITION_DATA$$RW$$Base = ADDR(.TFM_SP_SECURE_TEST_PARTITION_DATA);
@@ -726,6 +737,7 @@
*secure_suites.*(COMMON)
*attestation_s_interface_testsuite.*(.bss*)
*attestation_s_interface_testsuite.*(COMMON)
+ *(TFM_SP_SECURE_TEST_PARTITION_ATTR_ZI)
. += (. - start_of_TFM_SP_SECURE_TEST_PARTITION) ? 0 : 4;
. = ALIGN(32);
} > RAM AT> RAM
@@ -747,6 +759,7 @@
.TFM_SP_IPC_SERVICE_TEST_DATA : ALIGN(32)
{
*ipc_service_test.*(.data*)
+ *(TFM_SP_IPC_SERVICE_TEST_ATTR_RW)
. = ALIGN(32);
} > RAM AT> FLASH
Image$$TFM_SP_IPC_SERVICE_TEST_DATA$$RW$$Base = ADDR(.TFM_SP_IPC_SERVICE_TEST_DATA);
@@ -757,6 +770,7 @@
start_of_TFM_SP_IPC_SERVICE_TEST = .;
*ipc_service_test.*(.bss*)
*ipc_service_test.*(COMMON)
+ *(TFM_SP_IPC_SERVICE_TEST_ATTR_ZI)
. += (. - start_of_TFM_SP_IPC_SERVICE_TEST) ? 0 : 4;
. = ALIGN(32);
} > RAM AT> RAM
@@ -784,6 +798,7 @@
.TFM_SP_CORE_TEST_DATA : ALIGN(32)
{
*tfm_ss_core_test.*(.data*)
+ *(TFM_SP_CORE_TEST_ATTR_RW)
. = ALIGN(32);
} > RAM AT> FLASH
Image$$TFM_SP_CORE_TEST_DATA$$RW$$Base = ADDR(.TFM_SP_CORE_TEST_DATA);
@@ -794,6 +809,7 @@
start_of_TFM_SP_CORE_TEST = .;
*tfm_ss_core_test.*(.bss*)
*tfm_ss_core_test.*(COMMON)
+ *(TFM_SP_CORE_TEST_ATTR_ZI)
. += (. - start_of_TFM_SP_CORE_TEST) ? 0 : 4;
. = ALIGN(32);
} > RAM AT> RAM
@@ -815,6 +831,7 @@
.TFM_SP_CORE_TEST_2_DATA : ALIGN(32)
{
*tfm_ss_core_test_2.*(.data*)
+ *(TFM_SP_CORE_TEST_2_ATTR_RW)
. = ALIGN(32);
} > RAM AT> FLASH
Image$$TFM_SP_CORE_TEST_2_DATA$$RW$$Base = ADDR(.TFM_SP_CORE_TEST_2_DATA);
@@ -825,6 +842,7 @@
start_of_TFM_SP_CORE_TEST_2 = .;
*tfm_ss_core_test_2.*(.bss*)
*tfm_ss_core_test_2.*(COMMON)
+ *(TFM_SP_CORE_TEST_2_ATTR_ZI)
. += (. - start_of_TFM_SP_CORE_TEST_2) ? 0 : 4;
. = ALIGN(32);
} > RAM AT> RAM
@@ -846,6 +864,7 @@
.TFM_SP_IPC_CLIENT_TEST_DATA : ALIGN(32)
{
*ipc_client_test.*(.data*)
+ *(TFM_SP_IPC_CLIENT_TEST_ATTR_RW)
. = ALIGN(32);
} > RAM AT> FLASH
Image$$TFM_SP_IPC_CLIENT_TEST_DATA$$RW$$Base = ADDR(.TFM_SP_IPC_CLIENT_TEST_DATA);
@@ -856,6 +875,7 @@
start_of_TFM_SP_IPC_CLIENT_TEST = .;
*ipc_client_test.*(.bss*)
*ipc_client_test.*(COMMON)
+ *(TFM_SP_IPC_CLIENT_TEST_ATTR_ZI)
. += (. - start_of_TFM_SP_IPC_CLIENT_TEST) ? 0 : 4;
. = ALIGN(32);
} > RAM AT> RAM
diff --git a/platform/ext/common/gcc/tfm_common_s.ld.template b/platform/ext/common/gcc/tfm_common_s.ld.template
index 4382478..229aeff 100644
--- a/platform/ext/common/gcc/tfm_common_s.ld.template
+++ b/platform/ext/common/gcc/tfm_common_s.ld.template
@@ -373,6 +373,7 @@
{{pattern}}(.data*)
{% endfor %}
{% endif %}
+ *({{manifest.manifest.name}}_ATTR_RW)
. = ALIGN(32);
} > RAM AT> FLASH
Image$${{manifest.manifest.name}}_DATA$$RW$$Base = ADDR(.{{manifest.manifest.name}}_DATA);
@@ -393,6 +394,7 @@
{{pattern}}(COMMON)
{% endfor %}
{% endif %}
+ *({{manifest.manifest.name}}_ATTR_ZI)
. += (. - start_of_{{manifest.manifest.name}}) ? 0 : 4;
. = ALIGN(32);
} > RAM AT> RAM
@@ -451,6 +453,7 @@
{{pattern}}(.data*)
{% endfor %}
{% endif %}
+ *({{manifest.manifest.name}}_ATTR_RW)
. = ALIGN(32);
} > RAM AT> FLASH
Image$${{manifest.manifest.name}}_DATA$$RW$$Base = ADDR(.{{manifest.manifest.name}}_DATA);
@@ -471,6 +474,7 @@
{{pattern}}(COMMON)
{% endfor %}
{% endif %}
+ *({{manifest.manifest.name}}_ATTR_ZI)
. += (. - start_of_{{manifest.manifest.name}}) ? 0 : 4;
. = ALIGN(32);
} > RAM AT> RAM
diff --git a/platform/ext/common/tfm_initial_attestation_key_material.c b/platform/ext/common/tfm_initial_attestation_key_material.c
index b13cc99..f60521a 100644
--- a/platform/ext/common/tfm_initial_attestation_key_material.c
+++ b/platform/ext/common/tfm_initial_attestation_key_material.c
@@ -33,14 +33,14 @@
*/
/* Type of the EC curve which the key belongs to */
-TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
+TFM_LINK_SET_RO_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
const enum ecc_curve_t initial_attestation_curve_type = P_256;
/* Initial attestation private key in raw format, without any encoding.
* It belongs to the ECDSA P-256 curve.
* It MUST present on the device-
*/
-TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
+TFM_LINK_SET_RO_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
const uint8_t initial_attestation_private_key[] =
{
0xA9, 0xB4, 0x54, 0xB2, 0x6D, 0x6F, 0x90, 0xA4,
@@ -49,7 +49,7 @@
0x4B, 0x92, 0xA1, 0x93, 0x71, 0x34, 0x58, 0x5F
};
-TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
+TFM_LINK_SET_RO_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
const uint32_t initial_attestation_private_key_size =
sizeof(initial_attestation_private_key);
@@ -58,7 +58,7 @@
* It belongs to the ECDSA P-256 curve.
* It MIGHT be present on the device.
*/
-TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
+TFM_LINK_SET_RO_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
const uint8_t initial_attestation_public_x_key[] =
{
0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
@@ -67,7 +67,7 @@
0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F
};
-TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
+TFM_LINK_SET_RO_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
const uint32_t initial_attestation_public_x_key_size =
sizeof(initial_attestation_public_x_key);
@@ -76,7 +76,7 @@
* It belongs to the ECDSA P-256 curve.
* It MIGHT be present on the device.
*/
-TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
+TFM_LINK_SET_RO_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
const uint8_t initial_attestation_public_y_key[] =
{
0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
@@ -85,7 +85,7 @@
0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64
};
-TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
+TFM_LINK_SET_RO_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
const uint32_t initial_attestation_public_y_key_size =
sizeof(initial_attestation_public_y_key);
@@ -94,7 +94,7 @@
* psa_export_public_key() in interface/include/psa_crypto.h:
* 0x04 || X_coord || Y_coord
*/
-TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
+TFM_LINK_SET_RO_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
const uint8_t initial_attestation_raw_public_key_hash[] =
{
0xfa, 0x58, 0x75, 0x5f, 0x65, 0x86, 0x27, 0xce,
@@ -103,6 +103,6 @@
0x90, 0x28, 0x0e, 0xfc, 0xbc, 0xb5, 0x02, 0x48
};
-TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
+TFM_LINK_SET_RO_IN_PARTITION_SECTION("TFM_SP_INITIAL_ATTESTATION")
const uint32_t initial_attestation_raw_public_key_hash_size =
sizeof(initial_attestation_raw_public_key_hash);
diff --git a/platform/include/tfm_plat_defs.h b/platform/include/tfm_plat_defs.h
index ffe61f6..2a90d94 100644
--- a/platform/include/tfm_plat_defs.h
+++ b/platform/include/tfm_plat_defs.h
@@ -25,16 +25,46 @@
TFM_PLAT_ERR_FORCE_INT_SIZE = INT_MAX
};
+#if defined(TFM_LVL) && (TFM_LVL != 1)
/*!
- * \def TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
+ * \def TFM_LINK_SET_RO_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
*
- * \brief This macro provides a mechanism to place a function code in a specific
- * secure partition at linker time in TF-M Level 3.
+ * \brief This macro provides a mechanism to place a function code or a data
+ * variable in the code section (e.g. RO) of a specific secure partition
+ * at linker time in TF-M Level 3.
*
* \param[in] TFM_PARTITION_NAME TF-M partition name assigned in the manifest
* file "name" field.
*/
-#define TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION(TFM_PARTITION_NAME) \
+#define TFM_LINK_SET_RO_IN_PARTITION_SECTION(TFM_PARTITION_NAME) \
__attribute__((section(TFM_PARTITION_NAME"_ATTR_FN")))
+/*!
+ * \def TFM_LINK_SET_RW_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
+ *
+ * \brief This macro provides a mechanism to place data variables in the RW data
+ * section of a specific secure partition at linker time in TF-M Level 3.
+ *
+ * \param[in] TFM_PARTITION_NAME TF-M partition name assigned in the manifest
+ * file "name" field.
+ */
+#define TFM_LINK_SET_RW_IN_PARTITION_SECTION(TFM_PARTITION_NAME) \
+ __attribute__((section(TFM_PARTITION_NAME"_ATTR_RW")))
+
+/*!
+ * \def TFM_LINK_SET_ZI_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
+ *
+ * \brief This macro provides a mechanism to place data variables in the ZI data
+ * section of a specific secure partition at linker time in TF-M Level 3.
+ *
+ * \param[in] TFM_PARTITION_NAME TF-M partition name assigned in the manifest
+ * file "name" field.
+ */
+#define TFM_LINK_SET_ZI_IN_PARTITION_SECTION(TFM_PARTITION_NAME) \
+ __attribute__((section(TFM_PARTITION_NAME"_ATTR_ZI")))
+#else
+#define TFM_LINK_SET_RO_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
+#define TFM_LINK_SET_RW_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
+#define TFM_LINK_SET_ZI_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
+#endif
#endif /* __TFM_PLAT_DEFS_H__ */
diff --git a/platform/include/tfm_platform_system.h b/platform/include/tfm_platform_system.h
index 8ad22b1..c248fe5 100644
--- a/platform/include/tfm_platform_system.h
+++ b/platform/include/tfm_platform_system.h
@@ -25,7 +25,7 @@
*
* \details Requests a system reset to reset the MCU.
*/
-TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION("TFM_SP_PLATFORM")
+TFM_LINK_SET_RO_IN_PARTITION_SECTION("TFM_SP_PLATFORM")
void tfm_platform_hal_system_reset(void);
/*!
@@ -38,7 +38,7 @@
*
* \return Returns values as specified by the \ref tfm_platform_err_t
*/
-TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION("TFM_SP_PLATFORM")
+TFM_LINK_SET_RO_IN_PARTITION_SECTION("TFM_SP_PLATFORM")
enum tfm_platform_err_t tfm_platform_hal_ioctl(tfm_platform_ioctl_req_t request,
psa_invec *in_vec,
psa_outvec *out_vec);