FF-A: Check FF-A return is a valid direct response

Added a helper function to check if return of FFA_MSG_SEND_DIRECT_REQ
is FFA_MSG_SEND_DIRECT_RESP.
This is intended to make it easier to maintain cactus test commands
framework.

Signed-off-by: J-Alves <joao.alves@arm.com>
Change-Id: Ia43e88908aa3cbdd529a8835bffe43dee3e04a76
diff --git a/include/runtime_services/ffa_helpers.h b/include/runtime_services/ffa_helpers.h
index 2422abb..17587b3 100644
--- a/include/runtime_services/ffa_helpers.h
+++ b/include/runtime_services/ffa_helpers.h
@@ -396,6 +396,12 @@
 						uint64_t arg3,
 						uint64_t arg4);
 
+static inline bool is_ffa_direct_response(smc_ret_values ret)
+{
+	return (ffa_func_id(ret) == FFA_MSG_SEND_DIRECT_RESP_SMC32) ||
+	       (ffa_func_id(ret) == FFA_MSG_SEND_DIRECT_RESP_SMC64);
+}
+
 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/spm/cactus/cactus_main.c b/spm/cactus/cactus_main.c
index 11d7b99..cb83d87 100644
--- a/spm/cactus/cactus_main.c
+++ b/spm/cactus/cactus_main.c
@@ -134,8 +134,7 @@
 			ffa_ret = cactus_mem_send_cmd(vm_id, receiver, mem_func,
 						      handle);
 
-			if (ffa_func_id(ffa_ret) !=
-					FFA_MSG_SEND_DIRECT_RESP_SMC32) {
+			if (!is_ffa_direct_response(ffa_ret)) {
 				ERROR("Failed to send message. error: %x\n",
 					ffa_error_code(ffa_ret));
 				ffa_ret = cactus_error_resp(vm_id, source);
@@ -207,8 +206,7 @@
 			ffa_ret = cactus_echo_send_cmd(vm_id, echo_dest,
 							echo_val);
 
-			if (ffa_func_id(ffa_ret) !=
-			    FFA_MSG_SEND_DIRECT_RESP_SMC32) {
+			if (!is_ffa_direct_response(ffa_ret)) {
 				ERROR("Failed to send message. error: %x\n",
 					ffa_error_code(ffa_ret));
 				success = false;
@@ -259,8 +257,7 @@
 			 * request chain.
 			 */
 			bool is_returning_from_deadlock =
-				(ffa_func_id(ffa_ret) ==
-				 FFA_MSG_SEND_DIRECT_RESP_SMC32)
+				(is_ffa_direct_response(ffa_ret))
 				&&
 				(cactus_get_response(ffa_ret) == CACTUS_SUCCESS);
 
diff --git a/tftf/tests/runtime_services/secure_service/test_ffa_direct_messaging.c b/tftf/tests/runtime_services/secure_service/test_ffa_direct_messaging.c
index 1295442..50e8582 100644
--- a/tftf/tests/runtime_services/secure_service/test_ffa_direct_messaging.c
+++ b/tftf/tests/runtime_services/secure_service/test_ffa_direct_messaging.c
@@ -38,7 +38,7 @@
 	 * Return responses may be FFA_MSG_SEND_DIRECT_RESP or FFA_INTERRUPT,
 	 * but only expect the former. Expect SMC32 convention from SP.
 	 */
-	if (ffa_func_id(ret_values) != FFA_MSG_SEND_DIRECT_RESP_SMC32) {
+	if (!is_ffa_direct_response(ret_values)) {
 		tftf_testcase_printf("ffa_msg_send_direct_req returned %x\n",
 				     ffa_func_id(ret_values));
 		return TEST_RESULT_FAIL;
@@ -105,7 +105,7 @@
 
 	ret = cactus_req_echo_send_cmd(sender, dest, echo_dest, value);
 
-	if (ffa_func_id(ret) != FFA_MSG_SEND_DIRECT_RESP_SMC32) {
+	if (!is_ffa_direct_response(ret)) {
 		ERROR("Failed to send message. error: %x\n",
 		      ffa_error_code(ret));
 		return TEST_RESULT_FAIL;
@@ -157,7 +157,7 @@
 
 	ret = cactus_req_deadlock_send_cmd(HYP_ID, SP_ID(1), SP_ID(2), SP_ID(3));
 
-	if (ffa_func_id(ret) != FFA_MSG_SEND_DIRECT_RESP_SMC32) {
+	if (!is_ffa_direct_response(ret)) {
 		ERROR("Failed to send message. error: %x\n",
 		      ffa_error_code(ret));
 		return TEST_RESULT_FAIL;
diff --git a/tftf/tests/runtime_services/secure_service/test_ffa_memory_sharing.c b/tftf/tests/runtime_services/secure_service/test_ffa_memory_sharing.c
index 05a8b59..67ffb53 100644
--- a/tftf/tests/runtime_services/secure_service/test_ffa_memory_sharing.c
+++ b/tftf/tests/runtime_services/secure_service/test_ffa_memory_sharing.c
@@ -79,7 +79,7 @@
 
 	ret = cactus_mem_send_cmd(SENDER, RECEIVER, mem_func, handle);
 
-	if (ffa_func_id(ret) != FFA_MSG_SEND_DIRECT_RESP_SMC32) {
+	if (!is_ffa_direct_response(ret)) {
 		ERROR("Failed to send message. error: %x\n",
 		      ffa_error_code(ret));
 		return TEST_RESULT_FAIL;
@@ -144,7 +144,7 @@
 	ret = cactus_req_mem_send_send_cmd(HYP_ID, sender_sp, mem_func,
 					   receiver_sp);
 
-	if (ffa_func_id(ret) != FFA_MSG_SEND_DIRECT_RESP_SMC32) {
+	if (!is_ffa_direct_response(ret)) {
 		ERROR("Failed to send message. error: %x\n",
 		      ffa_error_code(ret));
 		return TEST_RESULT_FAIL;
diff --git a/tftf/tests/runtime_services/secure_service/test_spm_cpu_features.c b/tftf/tests/runtime_services/secure_service/test_spm_cpu_features.c
index c6470c1..8ce4cc3 100644
--- a/tftf/tests/runtime_services/secure_service/test_spm_cpu_features.c
+++ b/tftf/tests/runtime_services/secure_service/test_spm_cpu_features.c
@@ -55,7 +55,7 @@
 
 	smc_ret_values ret = cactus_req_simd_fill_send_cmd(SENDER, RECEIVER);
 
-	if (ffa_func_id(ret) != FFA_MSG_SEND_DIRECT_RESP_SMC32) {
+	if (!is_ffa_direct_response(ret)) {
 		ERROR("Failed to send message. error: %x\n",
 		      ffa_error_code(ret));
 		return TEST_RESULT_FAIL;