blob: 2e6cbfa8b05172e31a87d8277f82c8a9f1cc14ac [file] [log] [blame]
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +00001#
Olivier Deprez6baf5b82021-05-14 19:04:40 +02002# Copyright (c) 2018-2022, Arm Limited. All rights reserved.
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +00003#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6
Alexei Fedorov7fac1622020-06-19 14:25:43 +01007include branch_protection.mk
Ruari Phipps9f1952c2020-08-24 11:32:32 +01008include lib/xlat_tables_v2/xlat_tables.mk
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +00009
Olivier Deprez2765ebf2020-12-16 15:46:14 +010010# Include ivy platform Makefile
11IVY_PLAT_PATH := $(shell find spm/ivy/app/plat -wholename '*/${PLAT}')
12ifneq (${IVY_PLAT_PATH},)
13 include ${IVY_PLAT_PATH}/platform.mk
14endif
15
Olivier Deprez6baf5b82021-05-14 19:04:40 +020016IVY_SHIM := 1
17
18ifeq (${IVY_SHIM},1)
Daniel Boulbyf6c288e2022-07-25 14:07:57 +010019 IVY_DTB := $(BUILD_PLAT)/ivy-sel1.dtb
20 SECURE_PARTITIONS += ivy_shim
Olivier Deprez6baf5b82021-05-14 19:04:40 +020021else
Daniel Boulbyf6c288e2022-07-25 14:07:57 +010022 IVY_DTB := $(BUILD_PLAT)/ivy-sel0.dtb
23 SECURE_PARTITIONS += ivy
Olivier Deprez6baf5b82021-05-14 19:04:40 +020024endif
Antonio Nino Diaz1451f612018-11-30 10:51:26 +000025
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000026IVY_INCLUDES := \
Ruari Phipps9f1952c2020-08-24 11:32:32 +010027 -Itftf/framework/include \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000028 -Iinclude \
29 -Iinclude/common \
30 -Iinclude/common/${ARCH} \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000031 -Iinclude/lib \
32 -Iinclude/lib/${ARCH} \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000033 -Iinclude/lib/utils \
34 -Iinclude/lib/xlat_tables \
Daniel Boulbyf3da5912022-04-01 12:31:52 +010035 -Iinclude/plat/common \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000036 -Iinclude/runtime_services \
37 -Iinclude/runtime_services/secure_el0_payloads \
Daniel Boulbyf3da5912022-04-01 12:31:52 +010038 -Ispm/ivy/app \
Ruari Phipps1925b2a2020-09-10 14:05:55 +010039 -Ispm/ivy/shim \
Daniel Boulbyf3da5912022-04-01 12:31:52 +010040 -Ispm/common \
41 -Ispm/common/sp_tests/
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000042
43IVY_SOURCES := \
Ruari Phipps1925b2a2020-09-10 14:05:55 +010044 $(addprefix spm/ivy/app/, \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000045 aarch64/ivy_entrypoint.S \
46 ivy_main.c \
47 ) \
48 $(addprefix spm/common/, \
Ruari Phippsddc661a2020-09-10 09:06:14 +010049 sp_debug.c \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000050 sp_helpers.c \
Ruari Phippsddc661a2020-09-10 09:06:14 +010051 spm_helpers.c \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000052 ) \
Daniel Boulbyf3da5912022-04-01 12:31:52 +010053 $(addprefix spm/common/sp_tests/, \
54 sp_test_ffa.c \
55 )
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000056
Olivier Deprez6baf5b82021-05-14 19:04:40 +020057ifeq ($(IVY_SHIM),1)
58IVY_SOURCES += \
59 $(addprefix spm/ivy/shim/, \
60 aarch64/spm_shim_entrypoint.S \
61 aarch64/spm_shim_exceptions.S \
62 shim_main.c \
63 )
64endif
65
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000066# TODO: Remove dependency on TFTF files.
Daniel Boulbyf3da5912022-04-01 12:31:52 +010067IVY_SOURCES += \
68 tftf/framework/debug.c \
69 tftf/framework/${ARCH}/asm_debug.S \
Daniel Boulbyce386b12022-03-29 18:36:36 +010070 tftf/tests/runtime_services/secure_service/${ARCH}/ffa_arch_helpers.S \
Daniel Boulbyf3da5912022-04-01 12:31:52 +010071 tftf/tests/runtime_services/secure_service/ffa_helpers.c \
72 tftf/tests/runtime_services/secure_service/spm_common.c
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000073
74IVY_SOURCES += drivers/arm/pl011/${ARCH}/pl011_console.S \
75 lib/${ARCH}/cache_helpers.S \
76 lib/${ARCH}/misc_helpers.S \
Ruari Phippsddc661a2020-09-10 09:06:14 +010077 lib/smc/${ARCH}/asm_smc.S \
78 lib/smc/${ARCH}/smc.c \
79 lib/smc/${ARCH}/hvc.c \
Sandrine Bailleux750b7cc2018-11-08 14:10:18 +010080 lib/locks/${ARCH}/spinlock.S \
81 lib/utils/mp_printf.c \
Ruari Phipps9f1952c2020-08-24 11:32:32 +010082 ${XLAT_TABLES_LIB_SRCS}
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000083
84IVY_LINKERFILE := spm/ivy/ivy.ld.S
85
86IVY_DEFINES :=
87
Alexei Fedorov7fac1622020-06-19 14:25:43 +010088$(eval $(call add_define,IVY_DEFINES,ARM_ARCH_MAJOR))
89$(eval $(call add_define,IVY_DEFINES,ARM_ARCH_MINOR))
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000090$(eval $(call add_define,IVY_DEFINES,DEBUG))
91$(eval $(call add_define,IVY_DEFINES,ENABLE_ASSERTIONS))
Alexei Fedorov7fac1622020-06-19 14:25:43 +010092$(eval $(call add_define,IVY_DEFINES,ENABLE_BTI))
93$(eval $(call add_define,IVY_DEFINES,ENABLE_PAUTH))
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000094$(eval $(call add_define,IVY_DEFINES,LOG_LEVEL))
95$(eval $(call add_define,IVY_DEFINES,PLAT_${PLAT}))
Olivier Deprez6baf5b82021-05-14 19:04:40 +020096$(eval $(call add_define,IVY_DEFINES,IVY_SHIM))
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000097
Antonio Nino Diaz1451f612018-11-30 10:51:26 +000098$(IVY_DTB) : $(BUILD_PLAT)/ivy $(BUILD_PLAT)/ivy/ivy.elf
Olivier Deprez2765ebf2020-12-16 15:46:14 +010099$(IVY_DTB) : $(IVY_DTS)
100 @echo " DTBGEN $@"
Antonio Nino Diaz1451f612018-11-30 10:51:26 +0000101 ${Q}tools/generate_dtb/generate_dtb.sh \
Olivier Deprez6baf5b82021-05-14 19:04:40 +0200102 ivy ${IVY_DTS} $(BUILD_PLAT) $(IVY_DTB)
Antonio Nino Diaz1451f612018-11-30 10:51:26 +0000103 @echo
104 @echo "Built $@ successfully"
105 @echo
106
Daniel Boulbyf6c288e2022-07-25 14:07:57 +0100107ivy: $(IVY_DTB) SP_LAYOUT
Olivier Deprez2765ebf2020-12-16 15:46:14 +0100108
109# FDTS_CP copies flattened device tree sources
110# $(1) = output directory
111# $(2) = flattened device tree source file to copy
112define FDTS_CP
113 $(eval FDTS := $(addprefix $(1)/,$(notdir $(2))))
114FDTS_LIST += $(FDTS)
115$(FDTS): $(2) $(IVY_DTB)
116 @echo " CP $$<"
117 ${Q}cp $$< $$@
118endef
119
120ifdef FDTS_CP_LIST
121 $(eval files := $(filter %.dts,$(FDTS_CP_LIST)))
122 $(eval $(foreach file,$(files),$(call FDTS_CP,$(BUILD_PLAT),$(file))))
123ivy: $(FDTS_LIST)
124endif