diff options
author | Marc Bonnici <marc.bonnici@arm.com> | 2022-02-14 17:06:09 +0000 |
---|---|---|
committer | Marc Bonnici <marc.bonnici@arm.com> | 2022-05-04 12:07:33 +0100 |
commit | 7affa25cad400101c016082be2d102be0f4fce80 (patch) | |
tree | e1728c0729e74138a9a9b038152e4e4fb9790705 /include/common | |
parent | 6dc0f1f3296c76357bbda2d5232eab5486b6ccf7 (diff) | |
download | arm-trusted-firmware-7affa25cad400101c016082be2d102be0f4fce80.tar.gz |
feat(spmc/lsp): add logical partition framework
Introduce a framework to support running logical
partitions alongside the SPMC in EL3 as per the
v1.1 FF-A spec.
The DECLARE_LOGICAL_PARTITION macro has been added to
simplify the process to define a Logical Partition.
The partitions themselves are statically allocated
with the descriptors placed in RO memory.
It is assumed that the MAX_EL3_LP_DESCS_COUNT will
be defined by the platform.
Change-Id: I1c2523e0ad2d9c5d36aeeef6b8bcb1e80db7c443
Signed-off-by: Marc Bonnici <marc.bonnici@arm.com>
Diffstat (limited to 'include/common')
-rw-r--r-- | include/common/bl_common.h | 6 | ||||
-rw-r--r-- | include/common/bl_common.ld.h | 13 |
2 files changed, 17 insertions, 2 deletions
diff --git a/include/common/bl_common.h b/include/common/bl_common.h index 8cb4990f0..3a06cfbf9 100644 --- a/include/common/bl_common.h +++ b/include/common/bl_common.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2021, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2022, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -81,6 +81,10 @@ #define __RODATA_END__ Load$$__RODATA_EPILOGUE__$$Base #define __RT_SVC_DESCS_START__ Load$$__RT_SVC_DESCS__$$Base #define __RT_SVC_DESCS_END__ Load$$__RT_SVC_DESCS__$$Limit +#if SPMC_AT_EL3 +#define __EL3_LP_DESCS_START__ Load$$__EL3_LP_DESCS__$$Base +#define __EL3_LP_DESCS_END__ Load$$__EL3_LP_DESCS__$$Limit +#endif #define __RW_START__ Load$$LR$$LR_RW_DATA$$Base #define __RW_END__ Load$$LR$$LR_END$$Base #define __SPM_SHIM_EXCEPTIONS_START__ Load$$__SPM_SHIM_EXCEPTIONS__$$Base diff --git a/include/common/bl_common.ld.h b/include/common/bl_common.ld.h index 9888a3caf..080e331ed 100644 --- a/include/common/bl_common.ld.h +++ b/include/common/bl_common.ld.h @@ -39,6 +39,16 @@ KEEP(*(rt_svc_descs)) \ __RT_SVC_DESCS_END__ = .; +#if SPMC_AT_EL3 +#define EL3_LP_DESCS \ + . = ALIGN(STRUCT_ALIGN); \ + __EL3_LP_DESCS_START__ = .; \ + KEEP(*(el3_lp_descs)) \ + __EL3_LP_DESCS_END__ = .; +#else +#define EL3_LP_DESCS +#endif + #define PMF_SVC_DESCS \ . = ALIGN(STRUCT_ALIGN); \ __PMF_SVC_DESCS_START__ = .; \ @@ -89,7 +99,8 @@ PARSER_LIB_DESCS \ CPU_OPS \ GOT \ - BASE_XLAT_TABLE_RO + BASE_XLAT_TABLE_RO \ + EL3_LP_DESCS /* * .data must be placed at a lower address than the stacks if the stack |