acs: prepare to extend with S-EL0 partitions

Signed-off-by: J-Alves <joao.alves@arm.com>
Change-Id: Ie73ff1a8ba668699bb2776a26a3d1fe43ee67f31
diff --git a/acs/builder.sh b/acs/builder.sh
index afc44d4..682ceb2 100755
--- a/acs/builder.sh
+++ b/acs/builder.sh
@@ -4,48 +4,71 @@
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
-# Build ACS test suite.
 
+set -ex
+
+# Build TF-A project.
+# Argument $1 provides the sp layout file to be used.
+# Argument $2 provides the spmc manifest to be used.
+build_tfa() {
+	local SP_LAYOUT=$1
+	local SPMC_MANIFEST=$2
+
+	echo "Building TF-A."
+	make -C ${WORKSPACE}/trusted-firmware-a \
+		CROSS_COMPILE=aarch64-none-elf- \
+		PLAT=fvp \
+		DEBUG=1 \
+		BL33=${WORKSPACE}/ff-a-acs/build/output/vm1.bin \
+		BL32=${WORKSPACE}/hafnium/out/reference/secure_aem_v8a_fvp_vhe_clang/hafnium.bin \
+		SP_LAYOUT_FILE=${SP_LAYOUT} \
+		ARM_SPMC_MANIFEST_DTS=${SPMC_MANIFEST} \
+		ARM_ARCH_MAJOR=8 \
+		ARM_ARCH_MINOR=5 \
+		BRANCH_PROTECTION=1 \
+		GIC_EXT_INTID=1 \
+		PLAT_TEST_SPM=1 \
+		ENABLE_FEAT_MTE2=1 \
+		SPD=spmd \
+		ARM_BL2_SP_LIST_DTS=${WORKSPACE}/trusted-firmware-a/build/fvp/debug/sp_list_fragment.dts \
+		all fip -j8
+}
+
+# Copy the generated FIP image from TF-A project.
+# Argument $1 contains the output file.
+copy_tfa_fip() {
+	cp ${WORKSPACE}/trusted-firmware-a/build/fvp/debug/fip.bin $1
+}
+
+# Builds the ACS suite, assuming the repo has been setup.
+# Argument $1 contains the exception level for the SPs, which should be 0 or 1.
+build_acs() {
+	cd ${WORKSPACE}/ff-a-acs/build
+	cmake ../ -G"Unix Makefiles" \
+		-DCROSS_COMPILE=aarch64-none-elf- \
+		-DTARGET=tgt_tfa_fvp \
+		-DPLATFORM_FFA_V_ALL=1 \
+		-DPLATFORM_NS_HYPERVISOR_PRESENT=0 \
+		-DPLATFORM_SP_EL=$1 \
+		-DENABLE_BTI=ON \
+		-DCMAKE_BUILD_TYPE=Debug \
+		-DSUITE=all
+	make
+}
+
+# Build Hafnium.
+export PATH=${WORKSPACE}/hafnium/prebuilts/linux-x64/dtc:$PATH
+echo "Building Hafnium."
+make -C ${WORKSPACE}/hafnium PLATFORM=secure_aem_v8a_fvp_vhe
+
+# Setup the ACS test suite.
 cd ${WORKSPACE}/ff-a-acs
 mkdir build
-cd build
-echo "Building ACS test suite."
 
-cmake ../ -G"Unix Makefiles" \
-	-DCROSS_COMPILE=aarch64-none-elf- \
-	-DTARGET=tgt_tfa_fvp \
-	-DPLATFORM_FFA_V_ALL=1 \
-	-DPLATFORM_NS_HYPERVISOR_PRESENT=0 \
-	-DPLATFORM_SP_EL=1 \
-	-DENABLE_BTI=ON \
-	-DCMAKE_BUILD_TYPE=Debug \
-	-DSUITE=all
-make
-
-# Build Hafnium
-export PATH=${WORKSPACE}/hafnium/prebuilts/linux-x64/dtc:$PATH
-
-cd ${WORKSPACE}/hafnium
-echo "Building Hafnium."
-make PLATFORM=secure_aem_v8a_fvp_vhe
-
-# Build TF-A
-cd ${WORKSPACE}/trusted-firmware-a
-echo "Building TF-A."
-make CROSS_COMPILE=aarch64-none-elf- PLAT=fvp DEBUG=1 \
-	BL33=${WORKSPACE}/ff-a-acs/build/output/vm1.bin \
-	BL32=${WORKSPACE}/hafnium/out/reference/secure_aem_v8a_fvp_vhe_clang/hafnium.bin \
-	SP_LAYOUT_FILE=${WORKSPACE}/ff-a-acs/platform/manifest/tgt_tfa_fvp/sp_layout.json \
-	ARM_SPMC_MANIFEST_DTS=${WORKSPACE}/ff-a-acs/platform/manifest/tgt_tfa_fvp/fvp_spmc_manifest.dts \
-	ARM_ARCH_MAJOR=8 \
-	ARM_ARCH_MINOR=5 \
-	BRANCH_PROTECTION=1 \
-	GIC_EXT_INTID=1 \
-	PLAT_TEST_SPM=1 \
-	ENABLE_FEAT_MTE2=1 \
-	SPD=spmd \
-	ARM_BL2_SP_LIST_DTS=${WORKSPACE}/trusted-firmware-a/build/fvp/debug/sp_list_fragment.dts \
-	all fip -j8
+echo "Building ACS test suite (S-EL1 targets)."
+build_acs 1
+build_tfa ${WORKSPACE}/ff-a-acs/platform/manifest/tgt_tfa_fvp/sp_layout.json ${WORKSPACE}/ff-a-acs/platform/manifest/tgt_tfa_fvp/fvp_spmc_manifest.dts
+copy_tfa_fip ${WORKSPACE}/fip_sp_sel1.bin
 
 echo "Finished building all targets."
 cd ${WORKSPACE}