SPM: Add header files for partition static load
- Create two new header files that define the partition and service
static data type.
- Create a header file for partition static loading definitions.
Change-Id: I73dafef7b587d3cad6fa35ff4788365a9936c062
Signed-off-by: Mingyang Sun <mingyang.sun@arm.com>
diff --git a/secure_fw/spm/cmsis_psa/main.c b/secure_fw/spm/cmsis_psa/main.c
index b9dec4b..f8eb681 100644
--- a/secure_fw/spm/cmsis_psa/main.c
+++ b/secure_fw/spm/cmsis_psa/main.c
@@ -7,6 +7,7 @@
#include "fih.h"
#include "ffm/tfm_boot_data.h"
+#include "compile_check_defs.h"
#include "region.h"
#include "spm_ipc.h"
#include "tfm_hal_platform.h"
diff --git a/secure_fw/spm/cmsis_psa/spm_ipc.c b/secure_fw/spm/cmsis_psa/spm_ipc.c
index f8c5b5e..15b22ef 100644
--- a/secure_fw/spm/cmsis_psa/spm_ipc.c
+++ b/secure_fw/spm/cmsis_psa/spm_ipc.c
@@ -33,6 +33,8 @@
#include "spm_partition_defs.h"
#include "psa_manifest/pid.h"
#include "tfm/tfm_spm_services.h"
+#include "load/partition_defs.h"
+#include "load/service_defs.h"
#include "secure_fw/partitions/tfm_service_list.inc"
#include "tfm_spm_db_ipc.inc"
diff --git a/secure_fw/spm/cmsis_psa/spm_ipc.h b/secure_fw/spm/cmsis_psa/spm_ipc.h
index 892bad1..1ed68ff 100644
--- a/secure_fw/spm/cmsis_psa/spm_ipc.h
+++ b/secure_fw/spm/cmsis_psa/spm_ipc.h
@@ -17,16 +17,10 @@
#include "tfm_thread.h"
#include "psa/service.h"
-#define TFM_VERSION_POLICY_RELAXED 0
-#define TFM_VERSION_POLICY_STRICT 1
-
#define TFM_HANDLE_STATUS_IDLE 0
#define TFM_HANDLE_STATUS_ACTIVE 1
#define TFM_HANDLE_STATUS_CONNECT_ERROR 2
-#define PART_REGION_ADDR(partition, region) \
- (uint32_t)®ION_NAME(Image$$, partition, region)
-
#define TFM_CONN_HANDLE_MAX_NUM 16
/*
@@ -60,19 +54,6 @@
#define SPM_INVALID_PARTITION_IDX (~0U)
-/* Privileged definitions for partition thread mode */
-#define TFM_PARTITION_UNPRIVILEGED_MODE 0
-#define TFM_PARTITION_PRIVILEGED_MODE 1
-
-#define SPM_PART_FLAG_APP_ROT 0x01
-#define SPM_PART_FLAG_PSA_ROT 0x02
-#define SPM_PART_FLAG_IPC 0x04
-
-#define TFM_PRIORITY_HIGH THRD_PRIOR_HIGHEST
-#define TFM_PRIORITY_NORMAL THRD_PRIOR_MEDIUM
-#define TFM_PRIORITY_LOW THRD_PRIOR_LOWEST
-#define TFM_PRIORITY(LEVEL) TFM_PRIORITY_##LEVEL
-
#define TFM_MSG_MAGIC 0x15154343
/* Message struct to collect parameter from client */
@@ -103,9 +84,7 @@
};
/**
- * Holds the fields of the partition DB used by the SPM code. The values of
- * these fields are calculated at compile time, and set during initialisation
- * phase.
+ * Partition storage common type.
*/
struct partition_static_t {
uint32_t psa_ff_ver; /* PSA-FF version */
diff --git a/secure_fw/spm/cmsis_psa/tfm_rpc.c b/secure_fw/spm/cmsis_psa/tfm_rpc.c
index ac2de38..5872649 100644
--- a/secure_fw/spm/cmsis_psa/tfm_rpc.c
+++ b/secure_fw/spm/cmsis_psa/tfm_rpc.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
+ * Copyright (c) 2019-2021, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -9,6 +9,7 @@
#include "ffm/spm_psa_client_call.h"
#include "tfm_rpc.h"
#include "utilities.h"
+#include "load/partition_defs.h"
static void default_handle_req(void)
{
diff --git a/secure_fw/spm/cmsis_psa/tfm_spm_db_ipc.inc.template b/secure_fw/spm/cmsis_psa/tfm_spm_db_ipc.inc.template
index 45a1f71..503288f 100644
--- a/secure_fw/spm/cmsis_psa/tfm_spm_db_ipc.inc.template
+++ b/secure_fw/spm/cmsis_psa/tfm_spm_db_ipc.inc.template
@@ -137,9 +137,9 @@
#if TFM_MULTI_CORE_TOPOLOGY
.flags = SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_IPC,
#else
- .flags = SPM_PART_FLAG_APP_ROT | SPM_PART_FLAG_IPC,
+ .flags = SPM_PART_FLAG_IPC,
#endif
- .priority = TFM_PRIORITY_LOW,
+ .priority = PARTITION_PRI_LOWEST,
.entry = tfm_nspm_thread_entry,
.stack_base_addr = PART_REGION_ADDR(ARM_LIB_STACK, $$ZI$$Base),
.stack_size = S_PSP_STACK_SIZE,
@@ -170,14 +170,13 @@
.flags = 0
{% endif %}
{% if partition.manifest.type == "APPLICATION-ROT" %}
- | SPM_PART_FLAG_APP_ROT
+ | 0,
{% elif partition.manifest.type == "PSA-ROT" %}
- | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
+ | SPM_PART_FLAG_PSA_ROT,
{% else %}
#error "Unsupported type '{{partition.manifest.type}}' for partition '{{partition.manifest.name}}'!"
{% endif %}
- ,
- .priority = TFM_PRIORITY({{partition.manifest.priority}}),
+ .priority = PARTITION_PRI_{{partition.manifest.priority}},
.entry = {{partition.manifest.entry_point}},
.stack_base_addr = (uint32_t){{partition.manifest.name.lower()}}_stack,
.stack_size = (uint32_t){{partition.manifest.stack_size}},
diff --git a/secure_fw/spm/cmsis_psa/tfm_thread.h b/secure_fw/spm/cmsis_psa/tfm_thread.h
index 8e96e3f..159344b 100644
--- a/secure_fw/spm/cmsis_psa/tfm_thread.h
+++ b/secure_fw/spm/cmsis_psa/tfm_thread.h
@@ -27,7 +27,9 @@
/* Lower value has higher priority */
#define THRD_PRIOR_MASK 0xFF
#define THRD_PRIOR_HIGHEST 0x0
-#define THRD_PRIOR_MEDIUM 0x7F
+#define THRD_PRIOR_HIGH 0xF
+#define THRD_PRIOR_MEDIUM 0x1F
+#define THRD_PRIOR_LOW 0x7F
#define THRD_PRIOR_LOWEST 0xFF
/* Error code */