Trusted Firmware-A Tests, version 2.0
This is the first public version of the tests for the Trusted
Firmware-A project. Please see the documentation provided in the
source tree for more details.
Change-Id: I6f3452046a1351ac94a71b3525c30a4ca8db7867
Signed-off-by: Sandrine Bailleux <sandrine.bailleux@arm.com>
Co-authored-by: amobal01 <amol.balasokamble@arm.com>
Co-authored-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
Co-authored-by: Asha R <asha.r@arm.com>
Co-authored-by: Chandni Cherukuri <chandni.cherukuri@arm.com>
Co-authored-by: David Cunado <david.cunado@arm.com>
Co-authored-by: Dimitris Papastamos <dimitris.papastamos@arm.com>
Co-authored-by: Douglas Raillard <douglas.raillard@arm.com>
Co-authored-by: dp-arm <dimitris.papastamos@arm.com>
Co-authored-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
Co-authored-by: Jonathan Wright <jonathan.wright@arm.com>
Co-authored-by: Kévin Petit <kevin.petit@arm.com>
Co-authored-by: Roberto Vargas <roberto.vargas@arm.com>
Co-authored-by: Sathees Balya <sathees.balya@arm.com>
Co-authored-by: Shawon Roy <Shawon.Roy@arm.com>
Co-authored-by: Soby Mathew <soby.mathew@arm.com>
Co-authored-by: Thomas Abraham <thomas.abraham@arm.com>
Co-authored-by: Vikram Kanigiri <vikram.kanigiri@arm.com>
Co-authored-by: Yatharth Kochar <yatharth.kochar@arm.com>
diff --git a/el3_payload/Makefile b/el3_payload/Makefile
new file mode 100644
index 0000000..f6e809f
--- /dev/null
+++ b/el3_payload/Makefile
@@ -0,0 +1,91 @@
+#
+# Copyright (c) 2018, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+CROSS_COMPILE := aarch64-linux-gnu-
+CC := ${CROSS_COMPILE}gcc
+AS := ${CROSS_COMPILE}as
+LD := ${CROSS_COMPILE}ld
+OC := ${CROSS_COMPILE}objcopy
+OD := ${CROSS_COMPILE}objdump
+
+PLAT ?= fvp
+
+ASFLAGS := -nostdinc -ffreestanding -Wa,--fatal-warnings -Werror
+ASFLAGS += -Iplat/${PLAT}/ -I.
+
+PLAT_BUILD_DIR := build/${PLAT}
+SOURCES := entrypoint.S spin.S uart.S plat/${PLAT}/platform.S
+OBJS := $(patsubst %,$(PLAT_BUILD_DIR)/%,$(notdir $(SOURCES:.S=.o)))
+
+PROGRAM := el3_payload
+LINKER_SCRIPT := ${PLAT_BUILD_DIR}/${PROGRAM}.ld
+ELF := ${PLAT_BUILD_DIR}/${PROGRAM}.elf
+BIN := ${PLAT_BUILD_DIR}/${PROGRAM}.bin
+DUMP := ${PLAT_BUILD_DIR}/${PROGRAM}.dump
+
+include plat/${PLAT}/platform.mk
+
+all: ${BIN}
+
+${PLAT_BUILD_DIR}:
+ mkdir -p $@
+
+${PLAT_BUILD_DIR}/%.o: %.S ${PLAT_BUILD_DIR}
+ @echo " CC $<"
+ ${CC} ${ASFLAGS} -c $< -o $@
+
+# Specific rule for this '.o' file to avoid worrying about
+# plat/${PLAT}/platform.S being in a sub-directory...
+# TODO: Fix this workaround.
+${PLAT_BUILD_DIR}/platform.o: plat/${PLAT}/platform.S ${PLAT_BUILD_DIR}
+ @echo " CC $<"
+ ${CC} ${ASFLAGS} -c $< -o $@
+
+${PLAT_BUILD_DIR}/%.ld: %.ld.S ${PLAT_BUILD_DIR}
+ @echo " PP $<"
+ ${CC} -DDRAM_BASE=${DRAM_BASE} -DDRAM_SIZE=${DRAM_SIZE} -E -P -o $@ $<
+
+${ELF}: ${LINKER_SCRIPT} ${OBJS}
+ @echo " LD $<"
+ ${LD} ${LDFLAGS} ${OBJS} --script ${LINKER_SCRIPT} -o $@
+
+${BIN}: ${ELF}
+ @echo " BIN $@"
+ ${OC} -O binary $< $@
+
+${DUMP}: $(ELF)
+ @echo " OD $$@"
+ ${OD} -dx $< > $@
+
+dump: ${DUMP}
+
+clean:
+ rm -rf ${PLAT_BUILD_DIR}
+
+distclean: clean
+ rm -rf build/
+
+run: run_${PLAT}
+
+run_juno: ${ELF} scripts/juno/run_ds5_script.sh scripts/juno/load_el3_payload.ds
+ scripts/juno/run_ds5_script.sh scripts/juno/load_el3_payload.ds
+
+run_fvp: scripts/fvp/run_fvp.sh
+ scripts/fvp/run_fvp.sh
+
+help:
+ @echo "EL3 test payload"
+ @echo
+ @echo "To build:"
+ @echo "make [PLAT=fvp|juno] [TARGETS]"
+ @echo ""
+ @echo "The default platform is fvp."
+ @echo
+ @echo "TARGETS:"
+ @echo " all Build the payload [default target]"
+ @echo " dump Generate a dump file of the program"
+ @echo " run Run the payload on the given platform."
+ @echo " /!\ For Juno, requires a connection to a Juno board via DSTREAM"