FIX: Consistency handling SMC32/64 IDs

The function 'ffa_handler' was discarding the bit of the used
calling convention out of the func id, whereas in handling FF-A features
the calling convention bit was being considered.
Inconsistency relevant for the case of the interface FFA_RXTX_MAP [1],
whose support for 32-bit calling convention is not yet implemented.

[1] https://lists.trustedfirmware.org/pipermail/hafnium/2020-July/000063.html

Change-Id: I8ec027a6e65dcf6d1af297a6808554ecff967c3b
Signed-off-by: J-Alves <joao.alves@arm.com>
diff --git a/src/arch/aarch64/hypervisor/handler.c b/src/arch/aarch64/hypervisor/handler.c
index d923a68..c37666f 100644
--- a/src/arch/aarch64/hypervisor/handler.c
+++ b/src/arch/aarch64/hypervisor/handler.c
@@ -423,7 +423,7 @@
 static bool ffa_handler(struct ffa_value *args, struct vcpu *current,
 			struct vcpu **next)
 {
-	uint32_t func = args->func & ~SMCCC_CONVENTION_MASK;
+	uint32_t func = args->func;
 
 	/*
 	 * NOTE: When adding new methods to this handler update
@@ -450,7 +450,7 @@
 	case FFA_RX_RELEASE_32:
 		*args = api_ffa_rx_release(current, next);
 		return true;
-	case FFA_RXTX_MAP_32:
+	case FFA_RXTX_MAP_64:
 		*args = api_ffa_rxtx_map(ipa_init(args->arg1),
 					 ipa_init(args->arg2), args->arg3,
 					 current, next);
@@ -509,6 +509,7 @@
 					    (args->arg4 >> 16) & 0xffff,
 					    current);
 		return true;
+	case FFA_MSG_SEND_DIRECT_REQ_64:
 	case FFA_MSG_SEND_DIRECT_REQ_32: {
 #if SECURE_WORLD == 1
 		if (spmd_handler(args, current)) {
@@ -520,12 +521,13 @@
 			ffa_msg_send_receiver(*args), *args, current, next);
 		return true;
 	}
+	case FFA_MSG_SEND_DIRECT_RESP_64:
 	case FFA_MSG_SEND_DIRECT_RESP_32:
 		*args = api_ffa_msg_send_direct_resp(
 			ffa_msg_send_sender(*args),
 			ffa_msg_send_receiver(*args), *args, current, next);
 		return true;
-	case FFA_SECONDARY_EP_REGISTER_32:
+	case FFA_SECONDARY_EP_REGISTER_64:
 		*args = api_ffa_secondary_ep_register(ipa_init(args->arg1),
 						      current);
 		return true;