diff options
Diffstat (limited to 'spm/ivy/ivy.mk')
-rw-r--r-- | spm/ivy/ivy.mk | 89 |
1 files changed, 69 insertions, 20 deletions
diff --git a/spm/ivy/ivy.mk b/spm/ivy/ivy.mk index a5000496b..2e6cbfa8b 100644 --- a/spm/ivy/ivy.mk +++ b/spm/ivy/ivy.mk @@ -1,51 +1,85 @@ # -# Copyright (c) 2018-2020, Arm Limited. All rights reserved. +# Copyright (c) 2018-2022, Arm Limited. All rights reserved. # # SPDX-License-Identifier: BSD-3-Clause # include branch_protection.mk -include lib/sprt/sprt_client.mk +include lib/xlat_tables_v2/xlat_tables.mk -IVY_DTB := $(BUILD_PLAT)/ivy.dtb +# Include ivy platform Makefile +IVY_PLAT_PATH := $(shell find spm/ivy/app/plat -wholename '*/${PLAT}') +ifneq (${IVY_PLAT_PATH},) + include ${IVY_PLAT_PATH}/platform.mk +endif + +IVY_SHIM := 1 + +ifeq (${IVY_SHIM},1) + IVY_DTB := $(BUILD_PLAT)/ivy-sel1.dtb + SECURE_PARTITIONS += ivy_shim +else + IVY_DTB := $(BUILD_PLAT)/ivy-sel0.dtb + SECURE_PARTITIONS += ivy +endif IVY_INCLUDES := \ + -Itftf/framework/include \ -Iinclude \ -Iinclude/common \ -Iinclude/common/${ARCH} \ -Iinclude/lib \ -Iinclude/lib/${ARCH} \ - -Iinclude/lib/sprt \ -Iinclude/lib/utils \ -Iinclude/lib/xlat_tables \ + -Iinclude/plat/common \ -Iinclude/runtime_services \ -Iinclude/runtime_services/secure_el0_payloads \ - -Ispm/ivy \ + -Ispm/ivy/app \ + -Ispm/ivy/shim \ -Ispm/common \ - ${SPRT_LIB_INCLUDES} + -Ispm/common/sp_tests/ IVY_SOURCES := \ - $(addprefix spm/ivy/, \ + $(addprefix spm/ivy/app/, \ aarch64/ivy_entrypoint.S \ ivy_main.c \ ) \ $(addprefix spm/common/, \ - aarch64/sp_arch_helpers.S \ + sp_debug.c \ sp_helpers.c \ + spm_helpers.c \ ) \ + $(addprefix spm/common/sp_tests/, \ + sp_test_ffa.c \ + ) -# TODO: Remove dependency on TFTF files. +ifeq ($(IVY_SHIM),1) IVY_SOURCES += \ - tftf/framework/debug.c \ - tftf/framework/${ARCH}/asm_debug.S + $(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 \ + tftf/framework/${ARCH}/asm_debug.S \ + tftf/tests/runtime_services/secure_service/${ARCH}/ffa_arch_helpers.S \ + tftf/tests/runtime_services/secure_service/ffa_helpers.c \ + tftf/tests/runtime_services/secure_service/spm_common.c IVY_SOURCES += drivers/arm/pl011/${ARCH}/pl011_console.S \ - drivers/console/console.c \ lib/${ARCH}/cache_helpers.S \ lib/${ARCH}/misc_helpers.S \ + lib/smc/${ARCH}/asm_smc.S \ + lib/smc/${ARCH}/smc.c \ + lib/smc/${ARCH}/hvc.c \ lib/locks/${ARCH}/spinlock.S \ lib/utils/mp_printf.c \ - ${SPRT_LIB_SOURCES} + ${XLAT_TABLES_LIB_SRCS} IVY_LINKERFILE := spm/ivy/ivy.ld.S @@ -57,19 +91,34 @@ $(eval $(call add_define,IVY_DEFINES,DEBUG)) $(eval $(call add_define,IVY_DEFINES,ENABLE_ASSERTIONS)) $(eval $(call add_define,IVY_DEFINES,ENABLE_BTI)) $(eval $(call add_define,IVY_DEFINES,ENABLE_PAUTH)) -$(eval $(call add_define,IVY_DEFINES,FVP_CLUSTER_COUNT)) -$(eval $(call add_define,IVY_DEFINES,FVP_MAX_CPUS_PER_CLUSTER)) -$(eval $(call add_define,IVY_DEFINES,FVP_MAX_PE_PER_CPU)) $(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) : spm/ivy/ivy.dts - @echo " DTBGEN spm/ivy/ivy.dts" +$(IVY_DTB) : $(IVY_DTS) + @echo " DTBGEN $@" ${Q}tools/generate_dtb/generate_dtb.sh \ - ivy spm/ivy/ivy.dts $(BUILD_PLAT) + ivy ${IVY_DTS} $(BUILD_PLAT) $(IVY_DTB) @echo @echo "Built $@ successfully" @echo -ivy: $(IVY_DTB) +ivy: $(IVY_DTB) SP_LAYOUT + +# FDTS_CP copies flattened device tree sources +# $(1) = output directory +# $(2) = flattened device tree source file to copy +define FDTS_CP + $(eval FDTS := $(addprefix $(1)/,$(notdir $(2)))) +FDTS_LIST += $(FDTS) +$(FDTS): $(2) $(IVY_DTB) + @echo " CP $$<" + ${Q}cp $$< $$@ +endef + +ifdef FDTS_CP_LIST + $(eval files := $(filter %.dts,$(FDTS_CP_LIST))) + $(eval $(foreach file,$(files),$(call FDTS_CP,$(BUILD_PLAT),$(file)))) +ivy: $(FDTS_LIST) +endif |