aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorAchin Gupta <achin.gupta@arm.com>2019-10-11 14:54:48 +0100
committerMax Shvetsov <maksims.svecovs@arm.com>2020-02-10 14:09:10 +0000
commit0cb64d01d934cf9b8368a8afea839c7a9bd9a701 (patch)
tree495287b653d85c3515028e4a06f7901564b101f3 /include
parentd8b225a1a6d3d4bf7bf51fbd731413f76f6b8073 (diff)
downloadplatform_external_arm-trusted-firmware-0cb64d01d934cf9b8368a8afea839c7a9bd9a701.tar.gz
platform_external_arm-trusted-firmware-0cb64d01d934cf9b8368a8afea839c7a9bd9a701.tar.bz2
platform_external_arm-trusted-firmware-0cb64d01d934cf9b8368a8afea839c7a9bd9a701.zip
SPMD: add support for an example SPM core manifest
This patch repurposes the TOS FW configuration file as the manifest for the SPM core component which will reside at the secure EL adjacent to EL3. The SPM dispatcher component will use the manifest to determine how the core component must be initialised. Routines and data structure to parse the manifest have also been added. Signed-off-by: Achin Gupta <achin.gupta@arm.com> Signed-off-by: Artsem Artsemenka <artsem.artsemenka@arm.com> Change-Id: Id94f8ece43b4e05609f0a1d364708a912f6203cb
Diffstat (limited to 'include')
-rw-r--r--include/plat/common/platform.h11
-rw-r--r--include/services/spm_core_manifest.h55
2 files changed, 64 insertions, 2 deletions
diff --git a/include/plat/common/platform.h b/include/plat/common/platform.h
index 332cfca8d..f5bd298c5 100644
--- a/include/plat/common/platform.h
+++ b/include/plat/common/platform.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2019, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2013-2020, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -10,6 +10,9 @@
#include <stdint.h>
#include <lib/psci/psci.h>
+#if defined(SPD_spmd)
+ #include <services/spm_core_manifest.h>
+#endif
/*******************************************************************************
* Forward declarations
@@ -272,7 +275,11 @@ const struct spm_mm_boot_info *plat_get_secure_partition_boot_info(
int plat_spm_sp_rd_load(struct sp_res_desc *rd, const void *ptr, size_t size);
int plat_spm_sp_get_next_address(void **sp_base, size_t *sp_size,
void **rd_base, size_t *rd_size);
-
+#if defined(SPD_spmd)
+int plat_spm_core_manifest_load(spmc_manifest_sect_attribute_t *manifest,
+ const void *ptr,
+ size_t size);
+#endif
/*******************************************************************************
* Mandatory BL image load functions(may be overridden).
******************************************************************************/
diff --git a/include/services/spm_core_manifest.h b/include/services/spm_core_manifest.h
new file mode 100644
index 000000000..06ecc1391
--- /dev/null
+++ b/include/services/spm_core_manifest.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2020, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef SPMC_MANIFEST_H
+#define SPMC_MANIFEST_H
+
+#include <stdint.h>
+
+/*******************************************************************************
+ * Attribute Section
+ ******************************************************************************/
+
+typedef struct spm_core_manifest_sect_attribute {
+ /*
+ * SPCI version (mandatory).
+ */
+ uint32_t major_version;
+ uint32_t minor_version;
+
+ /*
+ * Run-Time Exception Level (mandatory):
+ * - 1: SEL1
+ * - 2: SEL2
+ */
+ uint32_t runtime_el;
+
+ /*
+ * Run-Time Execution state (optional):
+ * - 0: AArch64 (default)
+ * - 1: AArch32
+ */
+ uint32_t exec_state;
+
+ /*
+ * Address of binary image containing SPM core in bytes (optional).
+ */
+ uint64_t load_address;
+
+ /*
+ * Offset from the base of the partition's binary image to the entry
+ * point of the partition.
+ */
+ uint64_t entrypoint;
+
+ /*
+ * Size of binary image containing SPM core in bytes (mandatory).
+ */
+ uint32_t binary_size;
+
+} spmc_manifest_sect_attribute_t;
+
+#endif /* SPMC_MANIFEST_H */