xref: /arm-trusted-firmware/plat/arm/board/arm_fpga/platform.mk (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu#
2*91f16700Schasinglulu# Copyright (c) 2021-2023, Arm Limited. All rights reserved.
3*91f16700Schasinglulu#
4*91f16700Schasinglulu# SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu#
6*91f16700Schasinglulu
7*91f16700Schasingluluinclude common/fdt_wrappers.mk
8*91f16700Schasingluluinclude lib/libfdt/libfdt.mk
9*91f16700Schasinglulu
10*91f16700SchasingluluRESET_TO_BL31 := 1
11*91f16700Schasingluluifeq (${RESET_TO_BL31}, 0)
12*91f16700Schasinglulu$(error "This is a BL31-only port; RESET_TO_BL31 must be enabled")
13*91f16700Schasingluluendif
14*91f16700Schasinglulu
15*91f16700Schasingluluifeq (${ENABLE_PIE}, 1)
16*91f16700Schasingluluoverride SEPARATE_CODE_AND_RODATA := 1
17*91f16700Schasingluluendif
18*91f16700Schasinglulu
19*91f16700SchasingluluCTX_INCLUDE_AARCH32_REGS := 0
20*91f16700Schasingluluifeq (${CTX_INCLUDE_AARCH32_REGS}, 1)
21*91f16700Schasinglulu$(error "This is an AArch64-only port; CTX_INCLUDE_AARCH32_REGS must be disabled")
22*91f16700Schasingluluendif
23*91f16700Schasinglulu
24*91f16700Schasingluluifeq (${TRUSTED_BOARD_BOOT}, 1)
25*91f16700Schasinglulu$(error "TRUSTED_BOARD_BOOT must be disabled")
26*91f16700Schasingluluendif
27*91f16700Schasinglulu
28*91f16700SchasingluluPRELOADED_BL33_BASE := 0x80080000
29*91f16700Schasinglulu
30*91f16700SchasingluluFPGA_PRELOADED_DTB_BASE := 0x80070000
31*91f16700Schasinglulu$(eval $(call add_define,FPGA_PRELOADED_DTB_BASE))
32*91f16700Schasinglulu
33*91f16700SchasingluluFPGA_PRELOADED_CMD_LINE := 0x1000
34*91f16700Schasinglulu$(eval $(call add_define,FPGA_PRELOADED_CMD_LINE))
35*91f16700Schasinglulu
36*91f16700SchasingluluENABLE_BRBE_FOR_NS		:= 2
37*91f16700SchasingluluENABLE_TRBE_FOR_NS		:= 2
38*91f16700SchasingluluENABLE_FEAT_AMU			:= 2
39*91f16700SchasingluluENABLE_FEAT_AMUv1p1		:= 2
40*91f16700SchasingluluENABLE_FEAT_CSV2_2		:= 2
41*91f16700SchasingluluENABLE_FEAT_ECV			:= 2
42*91f16700SchasingluluENABLE_FEAT_FGT			:= 2
43*91f16700SchasingluluENABLE_FEAT_HCX			:= 2
44*91f16700SchasingluluENABLE_SYS_REG_TRACE_FOR_NS	:= 2
45*91f16700SchasingluluENABLE_TRF_FOR_NS		:= 2
46*91f16700Schasinglulu
47*91f16700Schasinglulu# Treating this as a memory-constrained port for now
48*91f16700SchasingluluUSE_COHERENT_MEM	:=	0
49*91f16700Schasinglulu
50*91f16700Schasinglulu# This can be overridden depending on CPU(s) used in the FPGA image
51*91f16700SchasingluluHW_ASSISTED_COHERENCY	:=	1
52*91f16700Schasinglulu
53*91f16700SchasingluluPL011_GENERIC_UART	:=	1
54*91f16700Schasinglulu
55*91f16700SchasingluluSUPPORT_UNKNOWN_MPID	?=	1
56*91f16700Schasinglulu
57*91f16700SchasingluluFPGA_CPU_LIBS	:=	lib/cpus/${ARCH}/aem_generic.S
58*91f16700Schasinglulu
59*91f16700Schasinglulu# select a different set of CPU files, depending on whether we compile for
60*91f16700Schasinglulu# hardware assisted coherency cores or not
61*91f16700Schasingluluifeq (${HW_ASSISTED_COHERENCY}, 0)
62*91f16700Schasinglulu# Cores used without DSU
63*91f16700Schasinglulu	FPGA_CPU_LIBS	+=	lib/cpus/aarch64/cortex_a35.S	\
64*91f16700Schasinglulu				lib/cpus/aarch64/cortex_a53.S	\
65*91f16700Schasinglulu				lib/cpus/aarch64/cortex_a57.S	\
66*91f16700Schasinglulu				lib/cpus/aarch64/cortex_a72.S	\
67*91f16700Schasinglulu				lib/cpus/aarch64/cortex_a73.S
68*91f16700Schasingluluelse
69*91f16700Schasinglulu# AArch64-only cores
70*91f16700Schasinglulu	FPGA_CPU_LIBS	+=	lib/cpus/aarch64/cortex_a510.S			\
71*91f16700Schasinglulu				lib/cpus/aarch64/cortex_a520.S			\
72*91f16700Schasinglulu				lib/cpus/aarch64/cortex_a715.S			\
73*91f16700Schasinglulu				lib/cpus/aarch64/cortex_a720.S			\
74*91f16700Schasinglulu				lib/cpus/aarch64/cortex_x3.S 			\
75*91f16700Schasinglulu				lib/cpus/aarch64/cortex_x4.S			\
76*91f16700Schasinglulu				lib/cpus/aarch64/neoverse_n_common.S		\
77*91f16700Schasinglulu				lib/cpus/aarch64/neoverse_n1.S			\
78*91f16700Schasinglulu				lib/cpus/aarch64/neoverse_n2.S			\
79*91f16700Schasinglulu				lib/cpus/aarch64/neoverse_v1.S			\
80*91f16700Schasinglulu				lib/cpus/aarch64/cortex_chaberton.S		\
81*91f16700Schasinglulu				lib/cpus/aarch64/cortex_blackhawk.S
82*91f16700Schasinglulu
83*91f16700Schasinglulu# AArch64/AArch32 cores
84*91f16700Schasinglulu	FPGA_CPU_LIBS	+=	lib/cpus/aarch64/cortex_a55.S	\
85*91f16700Schasinglulu				lib/cpus/aarch64/cortex_a75.S
86*91f16700Schasingluluendif
87*91f16700Schasinglulu
88*91f16700Schasingluluifeq (${SUPPORT_UNKNOWN_MPID}, 1)
89*91f16700Schasinglulu# Add support for unknown/invalid MPIDs (aarch64 only)
90*91f16700Schasinglulu$(eval $(call add_define,SUPPORT_UNKNOWN_MPID))
91*91f16700Schasinglulu	FPGA_CPU_LIBS	+=	lib/cpus/aarch64/generic.S
92*91f16700Schasingluluendif
93*91f16700Schasinglulu
94*91f16700Schasinglulu# Allow detection of GIC-600
95*91f16700SchasingluluGICV3_SUPPORT_GIC600	:=	1
96*91f16700Schasinglulu
97*91f16700SchasingluluGIC_ENABLE_V4_EXTN	:=	1
98*91f16700Schasinglulu
99*91f16700Schasinglulu# Include GICv3 driver files
100*91f16700Schasingluluinclude drivers/arm/gic/v3/gicv3.mk
101*91f16700Schasinglulu
102*91f16700SchasingluluFPGA_GIC_SOURCES	:=	${GICV3_SOURCES}			\
103*91f16700Schasinglulu				plat/common/plat_gicv3.c		\
104*91f16700Schasinglulu				plat/arm/board/arm_fpga/fpga_gicv3.c
105*91f16700Schasinglulu
106*91f16700SchasingluluFDT_SOURCES		:=	fdts/arm_fpga.dts
107*91f16700Schasinglulu
108*91f16700SchasingluluPLAT_INCLUDES		:=	-Iplat/arm/board/arm_fpga/include
109*91f16700Schasinglulu
110*91f16700SchasingluluPLAT_BL_COMMON_SOURCES	:=	plat/arm/board/arm_fpga/${ARCH}/fpga_helpers.S
111*91f16700Schasinglulu
112*91f16700SchasingluluBL31_SOURCES		+=	common/fdt_fixup.c				\
113*91f16700Schasinglulu				drivers/delay_timer/delay_timer.c		\
114*91f16700Schasinglulu				drivers/delay_timer/generic_delay_timer.c	\
115*91f16700Schasinglulu				drivers/arm/pl011/${ARCH}/pl011_console.S	\
116*91f16700Schasinglulu				plat/common/plat_psci_common.c			\
117*91f16700Schasinglulu				plat/arm/board/arm_fpga/fpga_pm.c			\
118*91f16700Schasinglulu				plat/arm/board/arm_fpga/fpga_topology.c		\
119*91f16700Schasinglulu				plat/arm/board/arm_fpga/fpga_console.c		\
120*91f16700Schasinglulu				plat/arm/board/arm_fpga/fpga_bl31_setup.c		\
121*91f16700Schasinglulu				${FPGA_CPU_LIBS}				\
122*91f16700Schasinglulu				${FPGA_GIC_SOURCES}
123*91f16700Schasinglulu
124*91f16700SchasingluluBL31_SOURCES		+=	${FDT_WRAPPERS_SOURCES}
125*91f16700Schasinglulu
126*91f16700Schasinglulu$(eval $(call MAKE_S,$(BUILD_PLAT),plat/arm/board/arm_fpga/rom_trampoline.S,bl31))
127*91f16700Schasinglulu$(eval $(call MAKE_S,$(BUILD_PLAT),plat/arm/board/arm_fpga/kernel_trampoline.S,bl31))
128*91f16700Schasinglulu$(eval $(call MAKE_LD,$(BUILD_PLAT)/build_axf.ld,plat/arm/board/arm_fpga/build_axf.ld.S,bl31))
129*91f16700Schasinglulu
130*91f16700Schasinglulubl31.axf: bl31 dtbs ${BUILD_PLAT}/rom_trampoline.o ${BUILD_PLAT}/kernel_trampoline.o ${BUILD_PLAT}/build_axf.ld
131*91f16700Schasinglulu	$(ECHO) "  LD      $@"
132*91f16700Schasinglulu	$(Q)$(LD) -T ${BUILD_PLAT}/build_axf.ld -L ${BUILD_PLAT} --strip-debug -s -n -o ${BUILD_PLAT}/bl31.axf
133*91f16700Schasinglulu
134*91f16700Schasingluluall: bl31.axf
135