xref: /arm-trusted-firmware/plat/qemu/common/common.mk (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu#
2*91f16700Schasinglulu# Copyright (c) 2023, Linaro Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu#
4*91f16700Schasinglulu# SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu#
6*91f16700Schasinglulu
7*91f16700Schasingluluinclude lib/libfdt/libfdt.mk
8*91f16700Schasingluluinclude common/fdt_wrappers.mk
9*91f16700Schasinglulu
10*91f16700SchasingluluPLAT_INCLUDES		:=	-Iinclude/plat/arm/common/		\
11*91f16700Schasinglulu				-I${PLAT_QEMU_COMMON_PATH}/include	\
12*91f16700Schasinglulu				-I${PLAT_QEMU_PATH}/include		\
13*91f16700Schasinglulu				-Iinclude/common/tbbr
14*91f16700Schasinglulu
15*91f16700Schasingluluifeq (${ARCH},aarch32)
16*91f16700SchasingluluQEMU_CPU_LIBS		:=	lib/cpus/${ARCH}/cortex_a15.S
17*91f16700Schasingluluelse
18*91f16700SchasingluluQEMU_CPU_LIBS		:=	lib/cpus/aarch64/aem_generic.S		\
19*91f16700Schasinglulu				lib/cpus/aarch64/cortex_a53.S		\
20*91f16700Schasinglulu				lib/cpus/aarch64/cortex_a55.S		\
21*91f16700Schasinglulu				lib/cpus/aarch64/cortex_a57.S		\
22*91f16700Schasinglulu				lib/cpus/aarch64/cortex_a72.S		\
23*91f16700Schasinglulu				lib/cpus/aarch64/cortex_a76.S		\
24*91f16700Schasinglulu				lib/cpus/aarch64/cortex_a710.S		\
25*91f16700Schasinglulu				lib/cpus/aarch64/neoverse_n_common.S	\
26*91f16700Schasinglulu				lib/cpus/aarch64/neoverse_n1.S		\
27*91f16700Schasinglulu				lib/cpus/aarch64/neoverse_v1.S		\
28*91f16700Schasinglulu				lib/cpus/aarch64/neoverse_n2.S		\
29*91f16700Schasinglulu				lib/cpus/aarch64/qemu_max.S
30*91f16700Schasinglulu
31*91f16700SchasingluluPLAT_INCLUDES		+=	-Iinclude/plat/arm/common/${ARCH}
32*91f16700Schasingluluendif
33*91f16700Schasinglulu
34*91f16700SchasingluluPLAT_BL_COMMON_SOURCES	:=	${PLAT_QEMU_COMMON_PATH}/qemu_common.c		\
35*91f16700Schasinglulu				${PLAT_QEMU_COMMON_PATH}/qemu_console.c		\
36*91f16700Schasinglulu				drivers/arm/pl011/${ARCH}/pl011_console.S
37*91f16700Schasinglulu
38*91f16700Schasingluluinclude lib/xlat_tables_v2/xlat_tables.mk
39*91f16700SchasingluluPLAT_BL_COMMON_SOURCES	+=	${XLAT_TABLES_LIB_SRCS}
40*91f16700Schasinglulu
41*91f16700Schasingluluifneq ($(ENABLE_STACK_PROTECTOR), 0)
42*91f16700Schasinglulu	PLAT_BL_COMMON_SOURCES += ${PLAT_QEMU_COMMON_PATH}/qemu_stack_protector.c
43*91f16700Schasingluluendif
44*91f16700Schasinglulu
45*91f16700SchasingluluBL1_SOURCES		+=	drivers/io/io_semihosting.c		\
46*91f16700Schasinglulu				drivers/io/io_storage.c			\
47*91f16700Schasinglulu				drivers/io/io_fip.c			\
48*91f16700Schasinglulu				drivers/io/io_memmap.c			\
49*91f16700Schasinglulu				lib/semihosting/semihosting.c		\
50*91f16700Schasinglulu				lib/semihosting/${ARCH}/semihosting_call.S	\
51*91f16700Schasinglulu				${PLAT_QEMU_COMMON_PATH}/qemu_io_storage.c	\
52*91f16700Schasinglulu				${PLAT_QEMU_COMMON_PATH}/${ARCH}/plat_helpers.S	\
53*91f16700Schasinglulu				${PLAT_QEMU_COMMON_PATH}/qemu_bl1_setup.c	\
54*91f16700Schasinglulu				${QEMU_CPU_LIBS}
55*91f16700Schasinglulu
56*91f16700SchasingluluBL2_SOURCES		+=	drivers/io/io_semihosting.c		\
57*91f16700Schasinglulu				drivers/io/io_storage.c			\
58*91f16700Schasinglulu				drivers/io/io_fip.c			\
59*91f16700Schasinglulu				drivers/io/io_memmap.c			\
60*91f16700Schasinglulu				lib/semihosting/semihosting.c		\
61*91f16700Schasinglulu				lib/semihosting/${ARCH}/semihosting_call.S		\
62*91f16700Schasinglulu				${PLAT_QEMU_COMMON_PATH}/qemu_io_storage.c		\
63*91f16700Schasinglulu				${PLAT_QEMU_COMMON_PATH}/${ARCH}/plat_helpers.S		\
64*91f16700Schasinglulu				${PLAT_QEMU_COMMON_PATH}/qemu_bl2_setup.c		\
65*91f16700Schasinglulu				${PLAT_QEMU_COMMON_PATH}/qemu_bl2_mem_params_desc.c	\
66*91f16700Schasinglulu				${PLAT_QEMU_COMMON_PATH}/qemu_image_load.c		\
67*91f16700Schasinglulu				common/desc_image_load.c		\
68*91f16700Schasinglulu				common/fdt_fixup.c
69*91f16700Schasinglulu
70*91f16700SchasingluluBL31_SOURCES		+=	${QEMU_CPU_LIBS}				\
71*91f16700Schasinglulu				lib/semihosting/semihosting.c			\
72*91f16700Schasinglulu				lib/semihosting/${ARCH}/semihosting_call.S	\
73*91f16700Schasinglulu				plat/common/plat_psci_common.c			\
74*91f16700Schasinglulu				${PLAT_QEMU_COMMON_PATH}/aarch64/plat_helpers.S	\
75*91f16700Schasinglulu				${PLAT_QEMU_COMMON_PATH}/qemu_bl31_setup.c	\
76*91f16700Schasinglulu				common/fdt_fixup.c				\
77*91f16700Schasinglulu				${QEMU_GIC_SOURCES}
78*91f16700Schasinglulu
79*91f16700Schasinglulu# CPU flag enablement
80*91f16700Schasingluluifeq (${ARCH},aarch64)
81*91f16700Schasinglulu
82*91f16700Schasinglulu# Cpu core architecture level:
83*91f16700Schasinglulu# v8.0: a53, a57, a72
84*91f16700Schasinglulu# v8.2: a55, a76, n1
85*91f16700Schasinglulu# v8.4: v1
86*91f16700Schasinglulu# v9.0: a710, n2
87*91f16700Schasinglulu#
88*91f16700Schasinglulu#
89*91f16700Schasinglulu# We go v8.0 by default and will enable all features we want
90*91f16700Schasinglulu
91*91f16700SchasingluluARM_ARCH_MAJOR		:=	8
92*91f16700SchasingluluARM_ARCH_MINOR		:=	0
93*91f16700Schasinglulu
94*91f16700Schasinglulu# 8.0
95*91f16700SchasingluluENABLE_FEAT_CSV2_2	:=	2
96*91f16700Schasinglulu
97*91f16700Schasinglulu# 8.1
98*91f16700SchasingluluENABLE_FEAT_PAN		:=	2
99*91f16700SchasingluluENABLE_FEAT_VHE		:=	2
100*91f16700Schasinglulu
101*91f16700Schasinglulu# 8.2
102*91f16700Schasinglulu# TF-A currently does not permit dynamic detection of FEAT_RAS
103*91f16700Schasinglulu# so this is the only safe setting
104*91f16700SchasingluluENABLE_FEAT_RAS		:=	0
105*91f16700Schasinglulu
106*91f16700Schasinglulu# 8.4
107*91f16700SchasingluluENABLE_FEAT_SEL2	:=	2
108*91f16700SchasingluluENABLE_FEAT_DIT		:=	2
109*91f16700Schasinglulu
110*91f16700Schasinglulu# 8.5
111*91f16700SchasingluluENABLE_FEAT_RNG		:=	2
112*91f16700SchasingluluENABLE_FEAT_SB		:=	2
113*91f16700Schasinglulu
114*91f16700Schasinglulu# 8.6
115*91f16700SchasingluluENABLE_FEAT_FGT		:=	2
116*91f16700Schasinglulu
117*91f16700Schasinglulu# 8.7
118*91f16700SchasingluluENABLE_FEAT_HCX		:=	2
119*91f16700Schasinglulu
120*91f16700Schasinglulu# SPM_MM is not compatible with ENABLE_SVE_FOR_NS (build breaks)
121*91f16700Schasingluluifeq (${SPM_MM},1)
122*91f16700Schasinglulu	ENABLE_SVE_FOR_NS	:= 0
123*91f16700Schasinglulu	ENABLE_SME_FOR_NS	:= 0
124*91f16700Schasingluluelse
125*91f16700Schasinglulu	ENABLE_SVE_FOR_NS	:= 2
126*91f16700Schasinglulu	ENABLE_SME_FOR_NS	:= 2
127*91f16700Schasingluluendif
128*91f16700Schasinglulu
129*91f16700Schasinglulu# Treating this as a memory-constrained port for now
130*91f16700SchasingluluUSE_COHERENT_MEM	:=	0
131*91f16700Schasinglulu
132*91f16700Schasinglulu# This can be overridden depending on CPU(s) used in the QEMU image
133*91f16700SchasingluluHW_ASSISTED_COHERENCY	:=	1
134*91f16700Schasinglulu
135*91f16700SchasingluluCTX_INCLUDE_AARCH32_REGS := 0
136*91f16700Schasingluluifeq (${CTX_INCLUDE_AARCH32_REGS}, 1)
137*91f16700Schasinglulu$(error "This is an AArch64-only port; CTX_INCLUDE_AARCH32_REGS must be disabled")
138*91f16700Schasingluluendif
139*91f16700Schasinglulu
140*91f16700Schasinglulu# Pointer Authentication sources
141*91f16700Schasingluluifeq (${ENABLE_PAUTH}, 1)
142*91f16700SchasingluluPLAT_BL_COMMON_SOURCES	+=	plat/arm/common/aarch64/arm_pauth.c
143*91f16700SchasingluluCTX_INCLUDE_PAUTH_REGS	:=	1
144*91f16700Schasingluluendif
145*91f16700Schasinglulu
146*91f16700Schasingluluendif
147