Platform: Add multi-core specific SPM HAL APIs declarations
Add multi-core specific SPM HAL APIs in tfm_spm_hal.h, including
multi-core booting and memory access check.
Change-Id: Iea6c44017518d3b71ba0af44941e29da28144ca1
Signed-off-by: David Hu <david.hu@arm.com>
diff --git a/platform/include/tfm_spm_hal.h b/platform/include/tfm_spm_hal.h
index cd12ae4..14a4a27 100644
--- a/platform/include/tfm_spm_hal.h
+++ b/platform/include/tfm_spm_hal.h
@@ -11,6 +11,9 @@
#include <stdint.h>
#include "tfm_secure_api.h"
#include "spm_api.h"
+#ifdef TFM_MULTI_CORE_TOPOLOGY
+#include "tfm_multi_core.h"
+#endif
#include "tfm_plat_defs.h"
/**
@@ -247,4 +250,62 @@
int32_t irq_line,
enum irq_target_state_t target_state);
+#ifdef TFM_MULTI_CORE_TOPOLOGY
+/**
+ * \brief Performs the necessary actions to start the non-secure CPU running
+ * the code at the specified address.
+ *
+ * \param[in] start_addr The entry point address of non-secure code.
+ */
+void tfm_spm_hal_boot_ns_cpu(uintptr_t start_addr);
+
+/**
+ * \brief Called on the secure CPU.
+ * Flags that the secure CPU has completed its initialization
+ * Waits, if necessary, for the non-secure CPU to flag that
+ * it has completed its initialisation
+ */
+void tfm_spm_hal_wait_for_ns_cpu_ready(void);
+
+/**
+ * \brief Retrieve the current active security configuration information and
+ * fills the \ref security_attr_info_t.
+ *
+ * \param[in] p Base address of target memory region
+ * \param[in] s Size of target memory region
+ * \param[out] p_attr Address of \ref security_attr_info_t to be filled
+ *
+ * \return void
+ */
+void tfm_spm_hal_get_mem_security_attr(const void *p, size_t s,
+ struct security_attr_info_t *p_attr);
+
+/**
+ * \brief Retrieve the secure memory protection configuration information and
+ * fills the \ref mem_attr_info_t.
+ *
+ * \param[in] p Base address of target memory region
+ * \param[in] s Size of target memory region
+ * \param[out] p_attr Address of \ref mem_attr_info_t to be filled
+ *
+ * \return void
+ */
+void tfm_spm_hal_get_secure_access_attr(const void *p, size_t s,
+ struct mem_attr_info_t *p_attr);
+
+/**
+ * \brief Retrieve the non-secure memory protection configuration information
+ * and fills the \ref mem_attr_info_t.
+ *
+ * \param[in] p Base address of target memory region
+ * \param[in] s Size of target memory region
+ * \param[out] p_attr Address of \ref mem_attr_info_t to be filled
+ *
+ * \return void
+ */
+void tfm_spm_hal_get_ns_access_attr(const void *p, size_t s,
+ struct mem_attr_info_t *p_attr);
+
+#endif /*TFM_MULTI_CORE_TOPOLOGY*/
+
#endif /* __TFM_SPM_HAL_H__ */