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