test(ivy): S-EL0 partition using VHE

Starting from [1], Cactus remains the sample S-EL1 partition.
Ivy remains the sample "S-EL0 partition" either using the shim at S-EL1
(as of today), or leveraging Hafnium VHE (reason for this change).
The same code base is re-used by adding the IVY_SHIM toggle. IVY_SHIM=1
is default using the shim, or 0 to use VHE (and strip the shim out).
Using svc helper from spm/common/aarch64/sp_arch_helpers.S

We must modify generate_json.sh so it only adds the partition
information to the layout file for the sp given in arg1. This allows
the ability for sp's to pass flags to the script such as IVY_SHIM which
is used to vary the dts file included for ivy.

Typical build command for a VHE-enabled Ivy partition:
make CROSS_COMPILE=aarch64-none-elf- PLAT=fvp DEBUG=1 TESTS=spm
    ARM_ARCH_MINOR=5 BRANCH_PROTECTION=1 IVY_SHIM=0 ivy -j8

The intent is to create a dedicated tftf_config build config for the
VHE-enabled build in the CI.

[1] https://trustedfirmware-a-tests.readthedocs.io/en/latest/getting_started/build.html#cactus-and-ivy

Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
Signed-off-by: Daniel Boulby <daniel.boulby@arm.com>
Change-Id: I34125b375b043c61c44ede558802d8ae757bd51f
diff --git a/spm/ivy/ivy.mk b/spm/ivy/ivy.mk
index f58422f..9531f9b 100644
--- a/spm/ivy/ivy.mk
+++ b/spm/ivy/ivy.mk
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2018-2021, Arm Limited. All rights reserved.
+# Copyright (c) 2018-2022, Arm Limited. All rights reserved.
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
@@ -13,7 +13,13 @@
 	include ${IVY_PLAT_PATH}/platform.mk
 endif
 
-IVY_DTB		:= build/${PLAT}/debug/ivy.dtb
+IVY_SHIM	:= 1
+
+ifeq (${IVY_SHIM},1)
+	IVY_DTB		:= $(BUILD_PLAT)/ivy-sel1.dtb
+else
+	IVY_DTB		:= $(BUILD_PLAT)/ivy-sel0.dtb
+endif
 
 IVY_INCLUDES :=					\
 	-Itftf/framework/include			\
@@ -35,11 +41,6 @@
 		aarch64/ivy_entrypoint.S		\
 		ivy_main.c				\
 	)						\
-	$(addprefix spm/ivy/shim/,			\
-		aarch64/spm_shim_entrypoint.S		\
-		aarch64/spm_shim_exceptions.S		\
-		shim_main.c				\
-	)						\
 	$(addprefix spm/common/,			\
 		aarch64/sp_arch_helpers.S		\
 		sp_debug.c				\
@@ -47,6 +48,15 @@
 		spm_helpers.c				\
 	)						\
 
+ifeq ($(IVY_SHIM),1)
+IVY_SOURCES	+=					\
+	$(addprefix spm/ivy/shim/,			\
+		aarch64/spm_shim_entrypoint.S		\
+		aarch64/spm_shim_exceptions.S		\
+		shim_main.c				\
+	)
+endif
+
 # TODO: Remove dependency on TFTF files.
 IVY_SOURCES	+=					\
 	tftf/framework/debug.c				\
@@ -75,14 +85,15 @@
 $(eval $(call add_define,IVY_DEFINES,ENABLE_PAUTH))
 $(eval $(call add_define,IVY_DEFINES,LOG_LEVEL))
 $(eval $(call add_define,IVY_DEFINES,PLAT_${PLAT}))
+$(eval $(call add_define,IVY_DEFINES,IVY_SHIM))
 
 $(IVY_DTB) : $(BUILD_PLAT)/ivy $(BUILD_PLAT)/ivy/ivy.elf
 $(IVY_DTB) : $(IVY_DTS)
 	@echo "  DTBGEN  $@"
 	${Q}tools/generate_dtb/generate_dtb.sh \
-		ivy ${IVY_DTS} $(BUILD_PLAT)
+		ivy ${IVY_DTS} $(BUILD_PLAT) $(IVY_DTB)
 	${Q}tools/generate_json/generate_json.sh \
-		ivy $(BUILD_PLAT)
+		ivy $(BUILD_PLAT) $(IVY_SHIM)
 	@echo
 	@echo "Built $@ successfully"
 	@echo