libsp: Add FF-A direct message routing extension

The routing extension is a layer on top of FF-A which enables SPs to
send direct messages to the normal world component while maintaining
the state of the SPs in the call chain.

Change-Id: Ic4d6d5cbbccbe1adb534e7b8d2502b78b3d9cb04
Signed-off-by: Imre Kis <imre.kis@arm.com>
diff --git a/components/messaging/ffa/libsp/component.cmake b/components/messaging/ffa/libsp/component.cmake
index 2fec443..a21c630 100644
--- a/components/messaging/ffa/libsp/component.cmake
+++ b/components/messaging/ffa/libsp/component.cmake
@@ -8,6 +8,8 @@
 	message(FATAL_ERROR "mandatory parameter TGT is not defined.")
 endif()
 
+set(FFA_DIRECT_MSG_ROUTING_EXTENSION ON CACHE BOOL "Enable FF-A direct message routing extension")
+
 target_sources(${TGT} PRIVATE
 	"${CMAKE_CURRENT_LIST_DIR}/aarch64/ffa_syscalls_a64.S"
 	"${CMAKE_CURRENT_LIST_DIR}/ffa.c"
@@ -34,6 +36,15 @@
 	${CMAKE_CURRENT_LIST_DIR}/include/sp_rxtx.h
 	)
 
+if (FFA_DIRECT_MSG_ROUTING_EXTENSION)
+	target_sources(${TGT} PRIVATE
+		"${CMAKE_CURRENT_LIST_DIR}/ffa_direct_msg_routing_extension.c"
+		)
+
+	target_compile_options(${TGT} PUBLIC
+		-DFFA_DIRECT_MSG_ROUTING_EXTENSION=1
+		)
+endif()
 
 target_include_directories(${TGT}
 	 PUBLIC