Core: Minimize the memory usage for partition list
Split the rodata, data and bss of the partition list.
Change-Id: I1b7e876ceee38b65b871b6be664d46bc7bd49af3
Signed-off-by: Summer Qin <summer.qin@arm.com>
diff --git a/secure_fw/spm/spm_api_func.c b/secure_fw/spm/spm_api_func.c
index 763a543..f425679 100644
--- a/secure_fw/spm/spm_api_func.c
+++ b/secure_fw/spm/spm_api_func.c
@@ -39,17 +39,17 @@
#ifdef TFM_CORE_DEBUG
if (err_type == TFM_INIT_FAILURE) {
printf("Partition init failed for partition id 0x%08X\r\n",
- partition->static_data.partition_id);
+ partition->static_data->partition_id);
} else {
printf(
"Unknown partition error %d (code: %d) for partition id 0x%08X\r\n",
- err_type, err_code, partition->static_data.partition_id);
+ err_type, err_code, partition->static_data->partition_id);
}
#else
(void)err_type;
(void)err_code;
#endif
- tfm_spm_partition_set_state(partition->static_data.partition_id,
+ tfm_spm_partition_set_state(partition->static_data->partition_id,
SPM_PARTITION_STATE_CLOSED);
}
@@ -65,7 +65,7 @@
for (idx = 0; idx < g_spm_partition_db.partition_count; ++idx) {
part = &g_spm_partition_db.partitions[idx];
tfm_spm_hal_configure_default_isolation(part->platform_data);
- if (part->static_data.partition_init == NULL) {
+ if (part->static_data->partition_init == NULL) {
tfm_spm_partition_set_state(idx, SPM_PARTITION_STATE_IDLE);
tfm_spm_partition_set_caller_partition_idx(idx,
SPM_INVALID_PARTITION_IDX);
@@ -75,8 +75,8 @@
desc.args = args;
desc.ns_caller = 0U;
desc.iovec_api = TFM_SFN_API_IOVEC;
- desc.sfn = (sfn_t)part->static_data.partition_init;
- desc.sp_id = part->static_data.partition_id;
+ desc.sfn = (sfn_t)part->static_data->partition_init;
+ desc.sp_id = part->static_data->partition_id;
res = tfm_core_sfn_request(&desc);
if (res == TFM_SUCCESS) {
tfm_spm_partition_set_state(idx, SPM_PARTITION_STATE_IDLE);
@@ -261,4 +261,4 @@
}
partition->runtime_data.orig_outvec = 0;
partition->runtime_data.iovec_api = 0;
-}
\ No newline at end of file
+}