Use 64-bit FF-A messaging in SPM test SP

The arm-ffa-user driver has been updated to use 64-bit FF-A direct
messaging since v5. Since the NWd test client for the SPM test SP
(xtest) relies on this driver, the SP itself needs to be updated
to stay compatible.

Signed-off-by: Gabor Toth <gabor.toth2@arm.com>
Change-Id: I1312ec0a6ba27b84a1eff596898c6b5cecb80ef0
diff --git a/components/service/spm_test/sp.c b/components/service/spm_test/sp.c
index 76ac133..fa9c7ea 100644
--- a/components/service/spm_test/sp.c
+++ b/components/service/spm_test/sp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2022-2023, Arm Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -221,14 +221,14 @@
 
 static void return_error(uint32_t error, struct ffa_direct_msg *msg)
 {
-	ffa_msg_send_direct_resp_32(msg->destination_id, msg->source_id, 0xff,
+	ffa_msg_send_direct_resp_64(msg->destination_id, msg->source_id, 0xff,
 				 error, 0, 0, 0, msg);
 }
 
 static void return_ok(struct ffa_direct_msg *msg)
 {
 
-	ffa_msg_send_direct_resp_32(msg->destination_id,
+	ffa_msg_send_direct_resp_64(msg->destination_id,
 				 msg->source_id, SP_TEST_OK, 0, 0, 0, 0, msg);
 }
 
@@ -245,28 +245,29 @@
 
 static void test_increase(struct ffa_direct_msg *msg)
 {
-	msg->args.args32[1]++;
-	msg->args.args32[2]++;
-	msg->args.args32[3]++;
-	msg->args.args32[4]++;
-	ffa_msg_send_direct_resp_32(msg->destination_id,msg->source_id,
-				 SP_TEST_OK, msg->args.args32[1],
-				 msg->args.args32[2],msg->args.args32[3],
-				 msg->args.args32[4], msg);
+	msg->args.args64[1]++;
+	msg->args.args64[2]++;
+	msg->args.args64[3]++;
+	msg->args.args64[4]++;
+	ffa_msg_send_direct_resp_64(msg->destination_id,msg->source_id,
+				 SP_TEST_OK, msg->args.args64[1],
+				 msg->args.args64[2],msg->args.args64[3],
+				 msg->args.args64[4], msg);
 
 }
 
 static void test_communication(struct ffa_direct_msg *msg)
 {
 	struct ffa_direct_msg sp_msg = {0};
-	uint16_t dst = (uint16_t)msg->args.args32[1];
+	uint16_t dst = (uint16_t)msg->args.args64[1];
 	ffa_result res = FFA_OK;
 
-	sp_msg.args.args32[1] =  0x55;
-	sp_msg.args.args32[2] =  0xAA;
-	sp_msg.args.args32[3] =  0xBB;
-	sp_msg.args.args32[4] =  0xCC;
-	res = ffa_msg_send_direct_req_32(msg->destination_id, dst,
+	sp_msg.args.args64[1] =  0x55;
+	sp_msg.args.args64[2] =  0xAA;
+	sp_msg.args.args64[3] =  0xBB;
+	sp_msg.args.args64[4] =  0xCC;
+
+	res = ffa_msg_send_direct_req_64(msg->destination_id, dst,
 				      EP_TEST_SP_INCREASE,0x55, 0xAA, 0xBB,
 				      0xCC, &sp_msg);
 
@@ -276,14 +277,14 @@
 		return;
 	}
 
-	if (sp_msg.args.args32[1] == 0x56 && sp_msg.args.args32[2] == 0xAB &&
-	    sp_msg.args.args32[3] == 0xBC &&sp_msg.args.args32[4] == 0xCD) {
+	if (sp_msg.args.args64[1] == 0x56 && sp_msg.args.args64[2] == 0xAB &&
+	    sp_msg.args.args64[3] == 0xBC &&sp_msg.args.args64[4] == 0xCD) {
 		return_ok(msg);
 	} else {
 		DMSG("Failed SP communication %x %x %x %x",
-		     sp_msg.args.args32[1],
-		     sp_msg.args.args32[2], sp_msg.args.args32[3],
-		     sp_msg.args.args32[4]);
+		     sp_msg.args.args64[1],
+		     sp_msg.args.args64[2], sp_msg.args.args64[3],
+		     sp_msg.args.args64[4]);
 
 		return_error(ERR_SP_COMMUNICATION, msg);
 	}
@@ -349,10 +350,10 @@
 
 	ffa_id_get(&own_id);
 
-	handle = (uint64_t)msg->args.args32[1] |
-		 (((uint64_t)msg->args.args32[2]) << 32);
+	handle = (uint64_t)msg->args.args64[1] |
+		 (((uint64_t)msg->args.args64[2]) << 32);
 	descriptor.tag = 0;
-	descriptor.sender_id = msg->args.args32[3] & 0xffff;
+	descriptor.sender_id = msg->args.args64[3] & 0xffff;
 	acc_desc.receiver_id = own_id;
 	acc_desc.data_access = sp_data_access_read_write;
 	res = sp_memory_retrieve(&descriptor, &acc_desc, regions, 1,
@@ -381,12 +382,12 @@
 		.operation_time_slicing = false,
 	};
 
-	if (msg->args.args32[3] == 1)
+	if (msg->args.args64[3] == 1)
 		flags.zero_memory = true;
 
 	ffa_id_get(&endpoint_id);
-	handle = (uint64_t)msg->args.args32[1] |
-		 (((uint64_t)msg->args.args32[2]) << 32);
+	handle = (uint64_t)msg->args.args64[1] |
+		 (((uint64_t)msg->args.args64[2]) << 32);
 	descriptor.tag = 0;
 
 	res = sp_memory_relinquish(handle, &endpoint_id, 1, &flags);
@@ -436,7 +437,7 @@
 		return;
 	}
 
-	res = ffa_msg_send_direct_req_32(own_id, service_ep_id,
+	res = ffa_msg_send_direct_req_64(own_id, service_ep_id,
 				      EP_RETRIEVE, handle & 0xffffffff,
 				      handle >> 32, own_id, 0, msg);
 
@@ -448,7 +449,7 @@
 		return;
 	}
 
-	res = ffa_msg_send_direct_req_32(own_id, service_ep_id,
+	res = ffa_msg_send_direct_req_64(own_id, service_ep_id,
 				EP_TRY_W_ACCESS, 0,
 				0, 0, 0, msg);
 
@@ -460,7 +461,7 @@
 		return;
 	}
 
-	res = ffa_msg_send_direct_req_32(own_id, service_ep_id,
+	res = ffa_msg_send_direct_req_64(own_id, service_ep_id,
 				EP_RELINQUISH, handle & 0xffffffff,
 				handle >> 32, 0, 0, msg);
 	if (res != FFA_OK) {
@@ -497,8 +498,8 @@
 	uint16_t src_id = msg->source_id = 0;
 	struct sp_memory_access_descriptor acc_desc[2] = { };
 	uint32_t err = 0;
-	uint16_t endpoint2 = msg->args.args32[1];
-	uint16_t endpoint3 = msg->args.args32[2];
+	uint16_t endpoint2 = msg->args.args64[1];
+	uint16_t endpoint3 = msg->args.args64[2];
 
 	my_buf[0] = 0xa;
 	set_rxtx_buf(&t_buf, NULL);
@@ -529,7 +530,7 @@
 		goto err;
 	}
 	/* test SP2*/
-	res = ffa_msg_send_direct_req_32(own_id, endpoint2,
+	res = ffa_msg_send_direct_req_64(own_id, endpoint2,
 				      EP_RETRIEVE, handle & 0xffffffff,
 				      handle >> 32, own_id, 0, msg);
 
@@ -541,7 +542,7 @@
 		return;
 	}
 
-	res = ffa_msg_send_direct_req_32(own_id, endpoint2,
+	res = ffa_msg_send_direct_req_64(own_id, endpoint2,
 				EP_TRY_W_ACCESS, 0,
 				0, 0, 0, msg);
 
@@ -559,7 +560,7 @@
 		goto err;
 	}
 
-	res = ffa_msg_send_direct_req_32(own_id, endpoint2,
+	res = ffa_msg_send_direct_req_64(own_id, endpoint2,
 				      EP_RELINQUISH, handle & 0xffffffff,
 				      handle >> 32, 0, 0, msg);
 
@@ -572,7 +573,7 @@
 	}
 	my_buf[0] = 0xa;
 	/* test SP3*/
-	res = ffa_msg_send_direct_req_32(own_id, endpoint3,
+	res = ffa_msg_send_direct_req_64(own_id, endpoint3,
 				      EP_RETRIEVE, handle & 0xffffffff,
 				      handle >> 32, own_id, 0, msg);
 
@@ -584,7 +585,7 @@
 		return;
 	}
 
-	res = ffa_msg_send_direct_req_32(own_id, endpoint3,
+	res = ffa_msg_send_direct_req_64(own_id, endpoint3,
 				EP_TRY_W_ACCESS, 0,
 				0, 0, 0, msg);
 
@@ -608,7 +609,7 @@
 		goto err;
 	}
 
-	res = ffa_msg_send_direct_req_32(own_id, endpoint3,
+	res = ffa_msg_send_direct_req_64(own_id, endpoint3,
 				EP_RELINQUISH, handle & 0xffffffff,
 				handle >> 32, 0, 0, msg);
 
@@ -760,7 +761,7 @@
 	ffa_msg_wait(&msg);
 
 	while (1) {
-		enum sp_tests test_case = (enum sp_tests)msg.args.args32[0];
+		enum sp_tests test_case = (enum sp_tests)msg.args.args64[0];
 
 		DMSG("SP:%x Starting test %s", own_id, sp_test_str[test_case]);
 		switch (test_case) {
@@ -788,18 +789,18 @@
 			test_mem_relinquish(&msg);
 			break;
 		case EP_SP_MEM_SHARING:
-			test_mem_sharing((uint16_t)msg.args.args32[1], &msg);
+			test_mem_sharing((uint16_t)msg.args.args64[1], &msg);
 			break;
 		case EP_SP_MEM_SHARING_MULTI:
 			test_mem_multi_sharing(&msg);
 			break;
 		case EP_SP_MEM_SHARING_EXC:
-			test_mem_sharing_exc((uint16_t)msg.args.args32[1],
+			test_mem_sharing_exc((uint16_t)msg.args.args64[1],
 					     &msg);
 			break;
 		case EP_SP_MEM_INCORRECT_ACCESS:
 			test_mem_sharing_inccorrect_access(
-				(uint16_t)msg.args.args32[1], &msg);
+				(uint16_t)msg.args.args64[1], &msg);
 			break;
 		case EP_SP_NOP:
 			return_ok(&msg);