feat(notifications): bind and unbind

Handle bind and unbind interfaces. The bind interface is intended for a
given receiver to enable a sender to set the specified notifications.
The unbind interface revokes the sender's ability to set the specified
notifications.
Bindings are tracked per notification in the receiver's vm structure.
This patch adds handling to FFA_NOTIFICATION_BIND and
FFA_NOTIFICATION_UNBIND, functions to validate the bindings,
as well as to make any bindings updates.

Change-Id: I7c70fe4e1285d6f58738d0229568666ce2075d12
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 26dd59c..880d07f 100644
--- a/src/arch/aarch64/hypervisor/handler.c
+++ b/src/arch/aarch64/hypervisor/handler.c
@@ -603,6 +603,18 @@
 		*args = api_ffa_notification_bitmap_destroy(
 			(ffa_vm_id_t)args->arg1, current);
 		return true;
+	case FFA_NOTIFICATION_BIND_32:
+		*args = api_ffa_notification_update_bindings(
+			ffa_sender(*args), ffa_receiver(*args), args->arg2,
+			ffa_notifications_bitmap(args->arg3, args->arg4), true,
+			current);
+		return true;
+	case FFA_NOTIFICATION_UNBIND_32:
+		*args = api_ffa_notification_update_bindings(
+			ffa_sender(*args), ffa_receiver(*args), 0,
+			ffa_notifications_bitmap(args->arg3, args->arg4), false,
+			current);
+		return true;
 	}
 
 	return false;