diff --git a/include/runtime_services/cactus_test_cmds.h b/include/runtime_services/cactus_test_cmds.h
index f892a2c..c65816f 100644
--- a/include/runtime_services/cactus_test_cmds.h
+++ b/include/runtime_services/cactus_test_cmds.h
@@ -41,8 +41,8 @@
 	ffa_vm_id_t source, ffa_vm_id_t dest, uint64_t cmd, uint64_t val0,
 	uint64_t val1, uint64_t val2, uint64_t val3)
 {
-	return 	ffa_msg_send_direct_req64_5args(source, dest, cmd, val0, val1,
-						val2, val3);
+	return 	ffa_msg_send_direct_req64(source, dest, cmd, val0, val1, val2,
+					  val3);
 }
 
 /**
@@ -54,8 +54,8 @@
 	ffa_vm_id_t source, ffa_vm_id_t dest, uint32_t resp, uint32_t val0,
 	uint64_t val1, uint64_t val2, uint64_t val3)
 {
-	return ffa_msg_send_direct_resp64_5args(source, dest, resp, val0, val1,
-						val2, val3);
+	return ffa_msg_send_direct_resp64(source, dest, resp, val0, val1,
+					  val2, val3);
 }
 
 /**
@@ -64,7 +64,7 @@
 static inline smc_ret_values cactus_response(
 	ffa_vm_id_t source, ffa_vm_id_t dest, uint32_t response)
 {
-	return ffa_msg_send_direct_resp(source, dest, response);
+	return ffa_msg_send_direct_resp64(source, dest, response, 0, 0, 0, 0);
 }
 
 static inline uint32_t cactus_get_response(smc_ret_values ret)
diff --git a/include/runtime_services/ffa_helpers.h b/include/runtime_services/ffa_helpers.h
index 064b5a3..e296299 100644
--- a/include/runtime_services/ffa_helpers.h
+++ b/include/runtime_services/ffa_helpers.h
@@ -372,19 +372,25 @@
 	return (ffa_vm_id_t)(val.ret1 >> 16U);
 }
 
-smc_ret_values ffa_msg_send_direct_req(uint32_t source_id, uint32_t dest_id, uint32_t message);
-smc_ret_values ffa_msg_send_direct_req64_5args(uint32_t source_id, uint32_t dest_id,
-					   uint64_t arg0, uint64_t arg1,
-					   uint64_t arg2, uint64_t arg3,
-					   uint64_t arg4);
+smc_ret_values ffa_msg_send_direct_req64(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_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_msg_send_direct_req32(ffa_vm_id_t source_id,
+					 ffa_vm_id_t dest_id, uint32_t arg0,
+					 uint32_t arg1, uint32_t arg2,
+					 uint32_t arg3, uint32_t arg4);
+
+smc_ret_values ffa_msg_send_direct_resp64(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_msg_send_direct_resp32(ffa_vm_id_t source_id,
+					  ffa_vm_id_t dest_id, uint32_t arg0,
+					  uint32_t arg1, uint32_t arg2,
+					  uint32_t arg3, uint32_t arg4);
 
 static inline bool is_ffa_direct_response(smc_ret_values ret)
 {
@@ -396,14 +402,11 @@
 smc_ret_values ffa_version(uint32_t input_version);
 smc_ret_values ffa_id_get(void);
 smc_ret_values ffa_msg_wait(void);
-smc_ret_values ffa_msg_send_direct_resp(ffa_vm_id_t source_id,
-					ffa_vm_id_t dest_id, uint32_t message);
 smc_ret_values ffa_error(int32_t error_code);
 smc_ret_values ffa_features(uint32_t feature);
 smc_ret_values ffa_partition_info_get(const uint32_t uuid[4]);
 smc_ret_values ffa_rx_release(void);
 smc_ret_values ffa_rxtx_map(uintptr_t send, uintptr_t recv, uint32_t pages);
-
 smc_ret_values ffa_mem_donate(uint32_t descriptor_length,
 			      uint32_t fragment_length);
 smc_ret_values ffa_mem_lend(uint32_t descriptor_length,
diff --git a/spm/cactus/cactus.mk b/spm/cactus/cactus.mk
index ac32d12..31ac990 100644
--- a/spm/cactus/cactus.mk
+++ b/spm/cactus/cactus.mk
@@ -40,10 +40,10 @@
 		sp_helpers.c				\
 	)						\
 	$(addprefix spm/cactus/cactus_tests/,		\
-		cactus_ffa_tests.c 			\
 		cactus_test_cpu_features.c		\
 		cactus_test_cmds.c			\
 		cactus_test_direct_messaging.c		\
+		cactus_test_ffa.c 			\
 		cactus_test_memory_sharing.c		\
 	)
 
diff --git a/tftf/tests/runtime_services/secure_service/ffa_helpers.c b/tftf/tests/runtime_services/secure_service/ffa_helpers.c
index 9567deb..41dd94b 100644
--- a/tftf/tests/runtime_services/secure_service/ffa_helpers.c
+++ b/tftf/tests/runtime_services/secure_service/ffa_helpers.c
@@ -57,58 +57,83 @@
  *     -BUSY: Message target is busy
  *     -ABORTED: Message target ran into an unexpected error and has aborted
  */
-static smc_ret_values __ffa_msg_send_direct_req32_5(uint32_t source_id,
-						     uint32_t dest_id,
-						     uint32_t arg0,
-						     uint32_t arg1,
-						     uint32_t arg2,
-						     uint32_t arg3,
-						     uint32_t arg4)
+smc_ret_values ffa_msg_send_direct_req64(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_args args = {
-		FFA_MSG_SEND_DIRECT_REQ_SMC32,
-		(source_id << 16) | dest_id,
-		0,
-		arg0, arg1, arg2, arg3, arg4
+		.fid = FFA_MSG_SEND_DIRECT_REQ_SMC64,
+		.arg1 = ((uint32_t)(source_id << 16)) | (dest_id),
+		.arg2 = 0,
+		.arg3 = arg0,
+		.arg4 = arg1,
+		.arg5 = arg2,
+		.arg6 = arg3,
+		.arg7 = arg4,
 	};
 
 	return tftf_smc(&args);
 }
 
-/* Direct message send helper accepting a single 32b message argument */
-smc_ret_values ffa_msg_send_direct_req(uint32_t source_id, uint32_t dest_id,
-					uint32_t message)
-{
-	return __ffa_msg_send_direct_req32_5(source_id, dest_id,
-					      message, 0, 0, 0, 0);
-}
-
-smc_ret_values ffa_msg_send_direct_req64_5args(uint32_t source_id,
-						     uint32_t dest_id,
-						     uint64_t arg0,
-						     uint64_t arg1,
-						     uint64_t arg2,
-						     uint64_t arg3,
-						     uint64_t arg4)
+smc_ret_values ffa_msg_send_direct_req32(ffa_vm_id_t source_id,
+					 ffa_vm_id_t dest_id, uint32_t arg0,
+					 uint32_t arg1, uint32_t arg2,
+					 uint32_t arg3, uint32_t arg4)
 {
 	smc_args args = {
-		FFA_MSG_SEND_DIRECT_REQ_SMC64,
-		(source_id << 16) | dest_id,
-		0,
-		arg0, arg1, arg2, arg3, arg4
+		.fid = FFA_MSG_SEND_DIRECT_REQ_SMC32,
+		.arg1 = ((uint32_t)(source_id << 16)) | (dest_id),
+		.arg2 = 0,
+		.arg3 = arg0,
+		.arg4 = arg1,
+		.arg5 = arg2,
+		.arg6 = arg3,
+		.arg7 = arg4,
 	};
 
 	return tftf_smc(&args);
 }
 
-/* Direct message send helper accepting a single 64b message argument */
-smc_ret_values ffa_msg_send_direct_req64(uint32_t source_id, uint32_t dest_id,
-					uint64_t message)
+smc_ret_values ffa_msg_send_direct_resp64(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)
 {
-	return ffa_msg_send_direct_req64_5args(source_id, dest_id,
-					      message, 0, 0, 0, 0);
+	smc_args args = {
+		.fid = FFA_MSG_SEND_DIRECT_RESP_SMC64,
+		.arg1 = ((uint32_t)(source_id << 16)) | (dest_id),
+		.arg2 = 0,
+		.arg3 = arg0,
+		.arg4 = arg1,
+		.arg5 = arg2,
+		.arg6 = arg3,
+		.arg7 = arg4,
+	};
+
+	return tftf_smc(&args);
 }
 
+smc_ret_values ffa_msg_send_direct_resp32(ffa_vm_id_t source_id,
+					  ffa_vm_id_t dest_id, uint32_t arg0,
+					  uint32_t arg1, uint32_t arg2,
+					  uint32_t arg3, uint32_t arg4)
+{
+	smc_args args = {
+		.fid = FFA_MSG_SEND_DIRECT_RESP_SMC32,
+		.arg1 = ((uint32_t)(source_id << 16)) | (dest_id),
+		.arg2 = 0,
+		.arg3 = arg0,
+		.arg4 = arg1,
+		.arg5 = arg2,
+		.arg6 = arg3,
+		.arg7 = arg4,
+	};
+
+	return tftf_smc(&args);
+}
+
+
 /**
  * Initialises the header of the given `ffa_memory_region`, not including the
  * composite memory region offset.
@@ -303,36 +328,6 @@
 	return tftf_smc(&args);
 }
 
-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,
-						uint64_t arg0,
-						uint64_t arg1,
-						uint64_t arg2,
-						uint64_t arg3,
-						uint64_t arg4)
-{
-	smc_args args = {
-		.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);
-}
-
 smc_ret_values ffa_error(int32_t error_code)
 {
 	smc_args args = {
diff --git a/tftf/tests/runtime_services/secure_service/spm_common.c b/tftf/tests/runtime_services/secure_service/spm_common.c
index 541ec92..7e54a3a 100644
--- a/tftf/tests/runtime_services/secure_service/spm_common.c
+++ b/tftf/tests/runtime_services/secure_service/spm_common.c
@@ -85,8 +85,9 @@
 	 * Send a first OP-TEE-defined protocol message through
 	 * FFA direct message.
 	 */
-	ret_values = ffa_msg_send_direct_req(HYP_ID, SP_ID(1),
-						OPTEE_FFA_GET_API_VERSION);
+	ret_values = ffa_msg_send_direct_req32(HYP_ID, SP_ID(1),
+					       OPTEE_FFA_GET_API_VERSION, 0,
+					       0, 0, 0);
 	if ((ret_values.ret3 == FFA_VERSION_MAJOR) &&
 	    (ret_values.ret4 == FFA_VERSION_MINOR)) {
 		is_optee_spmc_criteria++;
@@ -96,8 +97,9 @@
 	 * Send a second OP-TEE-defined protocol message through
 	 * FFA direct message.
 	 */
-	ret_values = ffa_msg_send_direct_req(HYP_ID, SP_ID(1),
-						OPTEE_FFA_GET_OS_VERSION);
+	ret_values = ffa_msg_send_direct_req32(HYP_ID, SP_ID(1),
+					       OPTEE_FFA_GET_OS_VERSION,
+					       0, 0, 0, 0);
 	if ((ret_values.ret3 == OPTEE_FFA_GET_OS_VERSION_MAJOR) &&
 	    (ret_values.ret4 == OPTEE_FFA_GET_OS_VERSION_MINOR)) {
 		is_optee_spmc_criteria++;
