cactus: implement hvc call to get interrupt id

Since an SP cannot access GIC directly, it relies on SPMC(S-EL2) to
get the interrupt ID.
This patch introduces a new hvc call "SPM_INTERRUPT_GET" to get
interrupt ID in S-EL1.

Change-Id: I37626f907174ae57a24dc6b86e89d26ba8ebbddf
Signed-off-by: Manish Pandey <manish.pandey2@arm.com>
diff --git a/include/runtime_services/ffa_helpers.h b/include/runtime_services/ffa_helpers.h
index 197879e..2cc2c46 100644
--- a/include/runtime_services/ffa_helpers.h
+++ b/include/runtime_services/ffa_helpers.h
@@ -23,6 +23,7 @@
 typedef unsigned short ffa_vm_id_t;
 typedef unsigned short ffa_vm_count_t;
 typedef unsigned short ffa_vcpu_count_t;
+typedef uint32_t ffa_int_id_t;
 
 #ifndef __ASSEMBLY__
 
diff --git a/spm/common/sp_helpers.c b/spm/common/sp_helpers.c
index 2345051..1b650d3 100644
--- a/spm/common/sp_helpers.c
+++ b/spm/common/sp_helpers.c
@@ -75,6 +75,17 @@
  * Hypervisor Calls Wrappers
  ******************************************************************************/
 
+ffa_int_id_t spm_interrupt_get(void)
+{
+	hvc_args args = {
+		.fid = SPM_INTERRUPT_GET
+	};
+
+	hvc_ret_values ret = tftf_hvc(&args);
+
+	return ret.ret0;
+}
+
 void spm_debug_log(char c)
 {
 	hvc_args args = {
diff --git a/spm/common/sp_helpers.h b/spm/common/sp_helpers.h
index 4f64a82..ec92227 100644
--- a/spm/common/sp_helpers.h
+++ b/spm/common/sp_helpers.h
@@ -13,6 +13,8 @@
 
 #define SPM_VM_ID_FIRST                 SP_ID(1)
 
+/* Should match with IDs defined in SPM/Hafnium */
+#define SPM_INTERRUPT_GET               (0xFF04)
 #define SPM_DEBUG_LOG                   (0xBD000000)
 
 typedef struct {
@@ -67,9 +69,7 @@
  * Hypervisor Calls Wrappers
  */
 
-ffa_vcpu_count_t spm_vcpu_get_count(ffa_vm_id_t vm_id);
-
-ffa_vm_count_t spm_vm_get_count(void);
+ffa_int_id_t spm_interrupt_get(void);
 
 void spm_debug_log(char c);