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,
 };