diff options
author | Ken Liu <Ken.Liu@arm.com> | 2021-05-12 16:19:04 +0800 |
---|---|---|
committer | Mingyang Sun <mingyang.sun@arm.com> | 2021-05-31 14:35:50 +0800 |
commit | acd2a57beb782bda6d840dcc868923a38f2e0f19 (patch) | |
tree | d0899a286411c5d5a5b5a024c2b6fdac666ec842 /secure_fw/partitions | |
parent | 9c7b9bec77d87a408f9d5594e429667c3c241e68 (diff) | |
download | trusted-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.c | 9 | ||||
-rw-r--r-- | secure_fw/partitions/partition_load_info.template | 15 | ||||
-rw-r--r-- | secure_fw/partitions/tfm_service_list.inc.template | 2 |
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}, |