aboutsummaryrefslogtreecommitdiff
path: root/secure_fw/partitions
diff options
context:
space:
mode:
authorKen Liu <Ken.Liu@arm.com>2021-05-12 16:19:04 +0800
committerMingyang Sun <mingyang.sun@arm.com>2021-05-31 14:35:50 +0800
commitacd2a57beb782bda6d840dcc868923a38f2e0f19 (patch)
treed0899a286411c5d5a5b5a024c2b6fdac666ec842 /secure_fw/partitions
parent9c7b9bec77d87a408f9d5594e429667c3c241e68 (diff)
downloadtrusted-firmware-m-acd2a57beb782bda6d840dcc868923a38f2e0f19.tar.gz
SPM: Refine 'load' interfaces
- Partitions need load info assemling MACROs, move them out of 'partition_static_load.h'. - Rename 'partition_static_load.h' into 'spm_load_api.h', and create a static load implementation 'static_load.c'. - Refine the load logic, call API provided in 'spm_load_api.h'. - Service lookup now list based. - Rename 'load info' variable in partition and service runtime defs. Change-Id: I73901094458ff1f11674100f8660eaa44a457d09 Signed-off-by: Ken Liu <Ken.Liu@arm.com>
Diffstat (limited to 'secure_fw/partitions')
-rw-r--r--secure_fw/partitions/ns_proxy_partition/load_info_ns_proxy.c9
-rw-r--r--secure_fw/partitions/partition_load_info.template15
-rw-r--r--secure_fw/partitions/tfm_service_list.inc.template2
3 files changed, 12 insertions, 14 deletions
diff --git a/secure_fw/partitions/ns_proxy_partition/load_info_ns_proxy.c b/secure_fw/partitions/ns_proxy_partition/load_info_ns_proxy.c
index 2a1446779f..fed4832dc7 100644
--- a/secure_fw/partitions/ns_proxy_partition/load_info_ns_proxy.c
+++ b/secure_fw/partitions/ns_proxy_partition/load_info_ns_proxy.c
@@ -12,7 +12,6 @@
#include "region.h"
#include "region_defs.h"
#include "spm_partition_defs.h"
-#include "load/partition_static_load.h"
#include "load/partition_defs.h"
#include "load/service_defs.h"
#include "load/asset_defs.h"
@@ -36,8 +35,8 @@ struct partition_tfm_sp_ns_proxy_load_info_t {
/* common length data */
struct partition_load_info_t cmn_info;
/* per-partition variable length data */
- uintptr_t stack_pos;
- uintptr_t heap_pos;
+ uintptr_t stack_addr;
+ uintptr_t heap_addr;
#if TFM_LVL == 3
struct asset_desc_t assets[TFM_SP_NS_PROXY_NASSETS];
#endif
@@ -63,8 +62,8 @@ const struct partition_tfm_sp_ns_proxy_load_info_t
.nassets = TFM_SP_NS_PROXY_NASSETS,
#endif
},
- .stack_pos = PART_REGION_ADDR(ARM_LIB_STACK, $$ZI$$Base),
- .heap_pos = 0,
+ .stack_addr = PART_REGION_ADDR(ARM_LIB_STACK, $$ZI$$Base),
+ .heap_addr = 0,
#if TFM_LVL == 3
.assets = {
{
diff --git a/secure_fw/partitions/partition_load_info.template b/secure_fw/partitions/partition_load_info.template
index ad005dddae..94e5bed571 100644
--- a/secure_fw/partitions/partition_load_info.template
+++ b/secure_fw/partitions/partition_load_info.template
@@ -10,7 +10,6 @@
#include <stdint.h>
#include <stddef.h>
#include "region.h"
-#include "load/partition_static_load.h"
#include "load/partition_defs.h"
#include "load/service_defs.h"
#include "load/asset_defs.h"
@@ -58,13 +57,13 @@ struct partition_{{manifest.name|lower}}_load_info_t {
/* common length data */
struct partition_load_info_t cmn_info;
/* per-partition variable length data */
- uintptr_t stack_pos;
- uintptr_t heap_pos;
+ uintptr_t stack_addr;
+ uintptr_t heap_addr;
{% if manifest.dependencies %}
uint32_t deps[{{(manifest.name|upper + "_NDEPS")}}];
{% endif %}
{% if manifest.services %}
- struct service_load_info_t services[{{(manifest.name|upper + "_NSERVS")}}];
+ struct service_load_info_t services[{{(manifest.name|upper + "_NSERVS")}}];
{% endif %}
#if TFM_LVL == 3
struct asset_desc_t assets[{{(manifest.name|upper + "_NASSETS")}}];
@@ -106,8 +105,8 @@ const struct partition_{{manifest.name|lower}}_load_info_t {{manifest.name|lower
.nservices = {{(manifest.name|upper + "_NSERVS")}},
.nassets = {{(manifest.name|upper + "_NASSETS")}},
},
- .stack_pos = PTR_TO_POSITION({{manifest.name|lower}}_stack),
- .heap_pos = 0,
+ .stack_addr = (uintptr_t){{manifest.name|lower}}_stack,
+ .heap_addr = 0,
{% if manifest.dependencies %}
.deps = {
{% for dep in manifest.dependencies %}
@@ -155,7 +154,7 @@ const struct partition_{{manifest.name|lower}}_load_info_t {{manifest.name|lower
#ifdef {{region.conditional}}
{% endif %}
{
- .dev.addr_ref = PTR_TO_POSITION({{region.name}}),
+ .dev.addr_ref = PTR_TO_REFERENCE({{region.name}}),
.attr = ASSET_DEV_REF_BIT,
},
{% if region.conditional %}
@@ -171,7 +170,7 @@ const struct partition_{{manifest.name|lower}}_load_info_t {{manifest.name|lower
#ifdef {{region.conditional}}
{% endif %}
{
- .dev.addr_ref = PTR_TO_POSITION({{region.name}}),
+ .dev.addr_ref = PTR_TO_REFERENCE({{region.name}}),
.attr = ASSET_DEV_REF_BIT,
},
{% if region.conditional %}
diff --git a/secure_fw/partitions/tfm_service_list.inc.template b/secure_fw/partitions/tfm_service_list.inc.template
index 386c463474..ac0e74acf8 100644
--- a/secure_fw/partitions/tfm_service_list.inc.template
+++ b/secure_fw/partitions/tfm_service_list.inc.template
@@ -31,7 +31,7 @@ struct service_t g_services[] =
/******** {{partition.manifest.name}} ********/
{% for service in partition.manifest.services %}
{{'{'}}
- .service_db = NULL,
+ .p_ldinf = NULL,
.partition = NULL,
.handle_list = {0},
.list = {0},