FF-A: FFA_MSG_DIRECT_RESP call using 5 registers
Signed-off-by: J-Alves <joao.alves@arm.com>
Change-Id: I69c012221743077c962f8099d824ea9452a1df22
diff --git a/include/runtime_services/ffa_helpers.h b/include/runtime_services/ffa_helpers.h
index 02a956e..2422abb 100644
--- a/include/runtime_services/ffa_helpers.h
+++ b/include/runtime_services/ffa_helpers.h
@@ -388,6 +388,14 @@
uint64_t arg2, uint64_t arg3,
uint64_t arg4);
+smc_ret_values ffa_msg_send_direct_resp64_5args(ffa_vm_id_t source_id,
+ ffa_vm_id_t dest_id,
+ uint64_t arg0,
+ uint64_t arg1,
+ uint64_t arg2,
+ uint64_t arg3,
+ uint64_t arg4);
+
smc_ret_values ffa_run(uint32_t dest_id, uint32_t vcpu_id);
smc_ret_values ffa_version(uint32_t input_version);
smc_ret_values ffa_id_get(void);
diff --git a/tftf/tests/runtime_services/secure_service/ffa_helpers.c b/tftf/tests/runtime_services/secure_service/ffa_helpers.c
index 923ee2c..f3da55f 100644
--- a/tftf/tests/runtime_services/secure_service/ffa_helpers.c
+++ b/tftf/tests/runtime_services/secure_service/ffa_helpers.c
@@ -389,13 +389,30 @@
}
smc_ret_values ffa_msg_send_direct_resp(ffa_vm_id_t source_id,
+ ffa_vm_id_t dest_id,
+ uint32_t message)
+{
+ return ffa_msg_send_direct_resp64_5args(source_id, dest_id, message,
+ 0, 0, 0, 0);
+}
+
+smc_ret_values ffa_msg_send_direct_resp64_5args(ffa_vm_id_t source_id,
ffa_vm_id_t dest_id,
- uint32_t message)
+ uint64_t arg0,
+ uint64_t arg1,
+ uint64_t arg2,
+ uint64_t arg3,
+ uint64_t arg4)
{
smc_args args = {
- .fid = FFA_MSG_SEND_DIRECT_RESP_SMC32,
- .arg1 = ((uint32_t)source_id << 16) | dest_id,
- .arg3 = message
+ .fid = FFA_MSG_SEND_DIRECT_RESP_SMC64,
+ .arg1 = (source_id << 16) | (dest_id),
+ .arg2 = 0,
+ .arg3 = arg0,
+ .arg4 = arg1,
+ .arg5 = arg2,
+ .arg6 = arg3,
+ .arg7 = arg4,
};
return tftf_smc(&args);