SPM: Add build config for FF-M interrupt APIs
Add configs of optionally building FF-M interrupt APIs. Build:
- psa_irq_enable() and psa_irq_disable() for either FLIH or
SLIH enabled.
- psa_reset_signal() for FLIH enabled.
- psa_eoi() for SLIH enabled.
Signed-off-by: Mingyang Sun <mingyang.sun@arm.com>
Change-Id: I0822f96c1e827181edf34a409b357b7e81485dc4
diff --git a/interface/include/config_impl.h.template b/interface/include/config_impl.h.template
index 85b2cba..214f928 100644
--- a/interface/include/config_impl.h.template
+++ b/interface/include/config_impl.h.template
@@ -19,6 +19,8 @@
#define {{"%-56s"|format("CONFIG_TFM_PSA_API_SUPERVISOR_CALL")}} {{config_impl['CONFIG_TFM_PSA_API_SUPERVISOR_CALL']}}
#define {{"%-56s"|format("CONFIG_TFM_CONNECTION_BASED_SERVICE_API")}} {{config_impl['CONFIG_TFM_CONNECTION_BASED_SERVICE_API']}}
+#define {{"%-56s"|format("CONFIG_TFM_FLIH_API")}} {{config_impl['CONFIG_TFM_FLIH_API']}}
+#define {{"%-56s"|format("CONFIG_TFM_SLIH_API")}} {{config_impl['CONFIG_TFM_SLIH_API']}}
#if CONFIG_TFM_SPM_BACKEND_IPC == 1
/* Trustzone NS agent working stack size. */
diff --git a/interface/include/psa_interface_redirect.h b/interface/include/psa_interface_redirect.h
index ee46d15..96dc79c 100644
--- a/interface/include/psa_interface_redirect.h
+++ b/interface/include/psa_interface_redirect.h
@@ -22,11 +22,7 @@
#define psa_reply psa_reply_svc
#define psa_notify psa_notify_svc
#define psa_clear psa_clear_svc
-#define psa_eoi psa_eoi_svc
#define psa_panic psa_panic_svc
-#define psa_irq_enable psa_irq_enable_svc
-#define psa_irq_disable psa_irq_disable_svc
-#define psa_reset_signal psa_reset_signal_svc
#define psa_rot_lifecycle_state psa_rot_lifecycle_state_svc
/* Following PSA APIs are only needed by connection-based services */
#if CONFIG_TFM_CONNECTION_BASED_SERVICE_API == 1
@@ -35,6 +31,19 @@
#define psa_set_rhandle psa_set_rhandle_svc
#endif /* CONFIG_TFM_CONNECTION_BASED_SERVICE_API */
+#if CONFIG_TFM_FLIH_API == 1 || CONFIG_TFM_SLIH_API == 1
+#define psa_irq_enable psa_irq_enable_svc
+#define psa_irq_disable psa_irq_disable_svc
+/* This API is only used for FLIH. */
+#if CONFIG_TFM_FLIH_API == 1
+#define psa_reset_signal psa_reset_signal_svc
+#endif
+/* This API is only used for SLIH. */
+#if CONFIG_TFM_SLIH_API == 1
+#define psa_eoi psa_eoi_svc
+#endif
+#endif /* CONFIG_TFM_FLIH_API == 1 || CONFIG_TFM_SLIH_API == 1 */
+
#elif CONFIG_TFM_PSA_API_CROSS_CALL == 1
#define psa_framework_version psa_framework_version_cross
@@ -48,11 +57,7 @@
#define psa_reply psa_reply_cross
#define psa_notify psa_notify_cross
#define psa_clear psa_clear_cross
-#define psa_eoi psa_eoi_cross
#define psa_panic psa_panic_cross
-#define psa_irq_enable psa_irq_enable_cross
-#define psa_irq_disable psa_irq_disable_cross
-#define psa_reset_signal psa_reset_signal_cross
#define psa_rot_lifecycle_state psa_rot_lifecycle_state_cross
/* Following PSA APIs are only needed by connection-based services */
#if CONFIG_TFM_CONNECTION_BASED_SERVICE_API == 1
@@ -61,6 +66,19 @@
#define psa_set_rhandle psa_set_rhandle_cross
#endif /* CONFIG_TFM_CONNECTION_BASED_SERVICE_API */
+#if CONFIG_TFM_FLIH_API == 1 || CONFIG_TFM_SLIH_API == 1
+#define psa_irq_enable psa_irq_enable_cross
+#define psa_irq_disable psa_irq_disable_cross
+/* This API is only used for FLIH. */
+#if CONFIG_TFM_FLIH_API == 1
+#define psa_reset_signal psa_reset_signal_cross
+#endif
+/* This API is only used for SLIH. */
+#if CONFIG_TFM_SLIH_API == 1
+#define psa_eoi psa_eoi_cross
+#endif
+#endif /* CONFIG_TFM_FLIH_API == 1 || CONFIG_TFM_SLIH_API == 1 */
+
#if PSA_FRAMEWORK_HAS_MM_IOVEC
#define psa_map_invec psa_map_invec_cross
#define psa_unmap_invec psa_unmap_invec_cross