xref: /aosp_15_r20/external/arm-trusted-firmware/bl31/bl31.mk (revision 54fd6939e177f8ff529b10183254802c76df6d08)
1*54fd6939SJiyong Park#
2*54fd6939SJiyong Park# Copyright (c) 2013-2021, ARM Limited and Contributors. All rights reserved.
3*54fd6939SJiyong Park#
4*54fd6939SJiyong Park# SPDX-License-Identifier: BSD-3-Clause
5*54fd6939SJiyong Park#
6*54fd6939SJiyong Park
7*54fd6939SJiyong Park################################################################################
8*54fd6939SJiyong Park# Include Makefile for the SPM-MM implementation
9*54fd6939SJiyong Park################################################################################
10*54fd6939SJiyong Parkifeq (${SUPPORT_UNKNOWN_MPID},1)
11*54fd6939SJiyong Park  ifeq (${DEBUG},0)
12*54fd6939SJiyong Park    $(warning WARNING: SUPPORT_UNKNOWN_MPID enabled)
13*54fd6939SJiyong Park  endif
14*54fd6939SJiyong Parkendif
15*54fd6939SJiyong Park
16*54fd6939SJiyong Parkifeq (${SPM_MM},1)
17*54fd6939SJiyong Park  ifeq (${EL3_EXCEPTION_HANDLING},0)
18*54fd6939SJiyong Park    $(error EL3_EXCEPTION_HANDLING must be 1 for SPM-MM support)
19*54fd6939SJiyong Park  else
20*54fd6939SJiyong Park    $(info Including SPM Management Mode (MM) makefile)
21*54fd6939SJiyong Park    include services/std_svc/spm_mm/spm_mm.mk
22*54fd6939SJiyong Park  endif
23*54fd6939SJiyong Parkendif
24*54fd6939SJiyong Park
25*54fd6939SJiyong Parkinclude lib/extensions/amu/amu.mk
26*54fd6939SJiyong Parkinclude lib/mpmm/mpmm.mk
27*54fd6939SJiyong Parkinclude lib/psci/psci_lib.mk
28*54fd6939SJiyong Park
29*54fd6939SJiyong ParkBL31_SOURCES		+=	bl31/bl31_main.c				\
30*54fd6939SJiyong Park				bl31/interrupt_mgmt.c				\
31*54fd6939SJiyong Park				bl31/aarch64/bl31_entrypoint.S			\
32*54fd6939SJiyong Park				bl31/aarch64/crash_reporting.S			\
33*54fd6939SJiyong Park				bl31/aarch64/ea_delegate.S			\
34*54fd6939SJiyong Park				bl31/aarch64/runtime_exceptions.S		\
35*54fd6939SJiyong Park				bl31/bl31_context_mgmt.c			\
36*54fd6939SJiyong Park				common/runtime_svc.c				\
37*54fd6939SJiyong Park				lib/cpus/aarch64/dsu_helpers.S			\
38*54fd6939SJiyong Park				plat/common/aarch64/platform_mp_stack.S		\
39*54fd6939SJiyong Park				services/arm_arch_svc/arm_arch_svc_setup.c	\
40*54fd6939SJiyong Park				services/std_svc/std_svc_setup.c		\
41*54fd6939SJiyong Park				${PSCI_LIB_SOURCES}				\
42*54fd6939SJiyong Park				${SPMD_SOURCES}					\
43*54fd6939SJiyong Park				${SPM_SOURCES}
44*54fd6939SJiyong Park
45*54fd6939SJiyong Parkifeq (${DISABLE_MTPMU},1)
46*54fd6939SJiyong ParkBL31_SOURCES		+=	lib/extensions/mtpmu/aarch64/mtpmu.S
47*54fd6939SJiyong Parkendif
48*54fd6939SJiyong Park
49*54fd6939SJiyong Parkifeq (${ENABLE_PMF}, 1)
50*54fd6939SJiyong ParkBL31_SOURCES		+=	lib/pmf/pmf_main.c
51*54fd6939SJiyong Parkendif
52*54fd6939SJiyong Park
53*54fd6939SJiyong Parkinclude lib/debugfs/debugfs.mk
54*54fd6939SJiyong Parkifeq (${USE_DEBUGFS},1)
55*54fd6939SJiyong Park	BL31_SOURCES	+= $(DEBUGFS_SRCS)
56*54fd6939SJiyong Parkendif
57*54fd6939SJiyong Park
58*54fd6939SJiyong Parkifeq (${EL3_EXCEPTION_HANDLING},1)
59*54fd6939SJiyong ParkBL31_SOURCES		+=	bl31/ehf.c
60*54fd6939SJiyong Parkendif
61*54fd6939SJiyong Park
62*54fd6939SJiyong Parkifeq (${SDEI_SUPPORT},1)
63*54fd6939SJiyong Parkifeq (${EL3_EXCEPTION_HANDLING},0)
64*54fd6939SJiyong Park  $(error EL3_EXCEPTION_HANDLING must be 1 for SDEI support)
65*54fd6939SJiyong Parkendif
66*54fd6939SJiyong ParkBL31_SOURCES		+=	services/std_svc/sdei/sdei_dispatch.S	\
67*54fd6939SJiyong Park				services/std_svc/sdei/sdei_event.c	\
68*54fd6939SJiyong Park				services/std_svc/sdei/sdei_intr_mgmt.c	\
69*54fd6939SJiyong Park				services/std_svc/sdei/sdei_main.c	\
70*54fd6939SJiyong Park				services/std_svc/sdei/sdei_state.c
71*54fd6939SJiyong Parkendif
72*54fd6939SJiyong Park
73*54fd6939SJiyong Parkifeq (${TRNG_SUPPORT},1)
74*54fd6939SJiyong ParkBL31_SOURCES		+=	services/std_svc/trng/trng_main.c	\
75*54fd6939SJiyong Park				services/std_svc/trng/trng_entropy_pool.c
76*54fd6939SJiyong Parkendif
77*54fd6939SJiyong Park
78*54fd6939SJiyong Parkifeq (${ENABLE_SPE_FOR_LOWER_ELS},1)
79*54fd6939SJiyong ParkBL31_SOURCES		+=	lib/extensions/spe/spe.c
80*54fd6939SJiyong Parkendif
81*54fd6939SJiyong Park
82*54fd6939SJiyong Parkifeq (${ENABLE_AMU},1)
83*54fd6939SJiyong ParkBL31_SOURCES		+=	${AMU_SOURCES}
84*54fd6939SJiyong Parkendif
85*54fd6939SJiyong Park
86*54fd6939SJiyong Parkifeq (${ENABLE_MPMM},1)
87*54fd6939SJiyong ParkBL31_SOURCES		+=	${MPMM_SOURCES}
88*54fd6939SJiyong Parkendif
89*54fd6939SJiyong Park
90*54fd6939SJiyong Parkifeq (${ENABLE_SME_FOR_NS},1)
91*54fd6939SJiyong ParkBL31_SOURCES		+=	lib/extensions/sme/sme.c
92*54fd6939SJiyong ParkBL31_SOURCES		+=	lib/extensions/sve/sve.c
93*54fd6939SJiyong Parkelse
94*54fd6939SJiyong Parkifeq (${ENABLE_SVE_FOR_NS},1)
95*54fd6939SJiyong ParkBL31_SOURCES		+=	lib/extensions/sve/sve.c
96*54fd6939SJiyong Parkendif
97*54fd6939SJiyong Parkendif
98*54fd6939SJiyong Park
99*54fd6939SJiyong Parkifeq (${ENABLE_MPAM_FOR_LOWER_ELS},1)
100*54fd6939SJiyong ParkBL31_SOURCES		+=	lib/extensions/mpam/mpam.c
101*54fd6939SJiyong Parkendif
102*54fd6939SJiyong Park
103*54fd6939SJiyong Parkifeq (${ENABLE_TRBE_FOR_NS},1)
104*54fd6939SJiyong ParkBL31_SOURCES		+=	lib/extensions/trbe/trbe.c
105*54fd6939SJiyong Parkendif
106*54fd6939SJiyong Park
107*54fd6939SJiyong Parkifeq (${ENABLE_SYS_REG_TRACE_FOR_NS},1)
108*54fd6939SJiyong ParkBL31_SOURCES		+=      lib/extensions/sys_reg_trace/aarch64/sys_reg_trace.c
109*54fd6939SJiyong Parkendif
110*54fd6939SJiyong Park
111*54fd6939SJiyong Parkifeq (${ENABLE_TRF_FOR_NS},1)
112*54fd6939SJiyong ParkBL31_SOURCES		+=	lib/extensions/trf/aarch64/trf.c
113*54fd6939SJiyong Parkendif
114*54fd6939SJiyong Park
115*54fd6939SJiyong Parkifeq (${WORKAROUND_CVE_2017_5715},1)
116*54fd6939SJiyong ParkBL31_SOURCES		+=	lib/cpus/aarch64/wa_cve_2017_5715_bpiall.S	\
117*54fd6939SJiyong Park				lib/cpus/aarch64/wa_cve_2017_5715_mmu.S
118*54fd6939SJiyong Parkendif
119*54fd6939SJiyong Park
120*54fd6939SJiyong Parkifeq ($(SMC_PCI_SUPPORT),1)
121*54fd6939SJiyong ParkBL31_SOURCES		+=	services/std_svc/pci_svc.c
122*54fd6939SJiyong Parkendif
123*54fd6939SJiyong Park
124*54fd6939SJiyong Parkifeq (${ENABLE_RME},1)
125*54fd6939SJiyong Parkinclude lib/gpt_rme/gpt_rme.mk
126*54fd6939SJiyong Park
127*54fd6939SJiyong ParkBL31_SOURCES		+=	${GPT_LIB_SRCS}					\
128*54fd6939SJiyong Park				${RMMD_SOURCES}
129*54fd6939SJiyong Parkendif
130*54fd6939SJiyong Park
131*54fd6939SJiyong ParkBL31_LINKERFILE		:=	bl31/bl31.ld.S
132*54fd6939SJiyong Park
133*54fd6939SJiyong Park# Flag used to indicate if Crash reporting via console should be included
134*54fd6939SJiyong Park# in BL31. This defaults to being present in DEBUG builds only
135*54fd6939SJiyong Parkifndef CRASH_REPORTING
136*54fd6939SJiyong ParkCRASH_REPORTING		:=	$(DEBUG)
137*54fd6939SJiyong Parkendif
138*54fd6939SJiyong Park
139*54fd6939SJiyong Park$(eval $(call assert_booleans,\
140*54fd6939SJiyong Park    $(sort \
141*54fd6939SJiyong Park	CRASH_REPORTING \
142*54fd6939SJiyong Park	EL3_EXCEPTION_HANDLING \
143*54fd6939SJiyong Park	SDEI_SUPPORT \
144*54fd6939SJiyong Park)))
145*54fd6939SJiyong Park
146*54fd6939SJiyong Park$(eval $(call add_defines,\
147*54fd6939SJiyong Park    $(sort \
148*54fd6939SJiyong Park        CRASH_REPORTING \
149*54fd6939SJiyong Park        EL3_EXCEPTION_HANDLING \
150*54fd6939SJiyong Park        SDEI_SUPPORT \
151*54fd6939SJiyong Park)))
152