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__ */