SPM: Add interrupt handling support for SFN backend
This patch adds the interrupt handling support for SFN backend:
- Add two new ops in backend
- Add IRQ APIs for SFN interface
Change-Id: If5c694800f6c882f5852c9092143f4db5f0f4bd1
Signed-off-by: Kevin Peng <kevin.peng@arm.com>
diff --git a/secure_fw/spm/ffm/backend_ipc.c b/secure_fw/spm/ffm/backend_ipc.c
index dba325a..fb9e4b3 100644
--- a/secure_fw/spm/ffm/backend_ipc.c
+++ b/secure_fw/spm/ffm/backend_ipc.c
@@ -202,9 +202,25 @@
return control;
}
+static void ipc_wait(struct partition_t *p_pt, psa_signal_t signals)
+{
+ (void)signals;
+
+ thrd_wait_on(&p_pt->waitobj, CURRENT_THREAD);
+}
+
+static void ipc_wake_up(struct partition_t *p_pt, psa_signal_t signals)
+{
+ thrd_wake_up(&p_pt->waitobj,
+ p_pt->signals_asserted & p_pt->signals_waiting);
+ p_pt->signals_waiting &= ~signals;
+}
+
const struct backend_ops_t backend_instance = {
.comp_init_assuredly = ipc_comp_init_assuredly,
.system_run = ipc_system_run,
.messaging = ipc_messaging,
.replying = ipc_replying,
+ .wait = ipc_wait,
+ .wake_up = ipc_wake_up,
};