1172e55beSBryan O'Donoghue# 2172e55beSBryan O'Donoghue# Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. 3172e55beSBryan O'Donoghue# 4172e55beSBryan O'Donoghue# SPDX-License-Identifier: BSD-3-Clause 5172e55beSBryan O'Donoghue# 6172e55beSBryan O'Donoghue 7172e55beSBryan O'Donoghue# Architecture 8172e55beSBryan O'Donoghue$(eval $(call add_define,ARMV7_SUPPORTS_LARGE_PAGE_ADDRESSING)) 9172e55beSBryan O'Donoghue 10172e55beSBryan O'Donoghue# Tune compiler for Cortex-A7 11172e55beSBryan O'Donoghueifeq ($(notdir $(CC)),armclang) 12172e55beSBryan O'Donoghue TF_CFLAGS += -mfpu=neon 13172e55beSBryan O'Donoghue ASFLAGS += -mfpu=neon 14172e55beSBryan O'Donoghueelse ifneq ($(findstring clang,$(notdir $(CC))),) 15172e55beSBryan O'Donoghue TF_CFLAGS += -mfpu=neon 16172e55beSBryan O'Donoghue ASFLAGS += -mfpu=neon 17172e55beSBryan O'Donoghueelse 18172e55beSBryan O'Donoghue TF_CFLAGS += -mfpu=neon 19172e55beSBryan O'Donoghue ASFLAGS += -mfpu=neon 20172e55beSBryan O'Donoghueendif 21172e55beSBryan O'Donoghue 22172e55beSBryan O'Donoghue# Platform 23172e55beSBryan O'DonoghuePLAT_INCLUDES := -Idrivers/imx/uart \ 24172e55beSBryan O'Donoghue -Iinclude/common/tbbr \ 25172e55beSBryan O'Donoghue -Iplat/imx/common/include/ \ 26172e55beSBryan O'Donoghue -Iplat/imx/imx7/warp7/include \ 27172e55beSBryan O'Donoghue -Idrivers/imx/timer \ 28172e55beSBryan O'Donoghue -Idrivers/imx/usdhc \ 29172e55beSBryan O'Donoghue -Iplat/imx/imx7/include 30172e55beSBryan O'Donoghue 31172e55beSBryan O'Donoghue# Translation tables library 32172e55beSBryan O'Donoghueinclude lib/xlat_tables_v2/xlat_tables.mk 33172e55beSBryan O'Donoghue 34172e55beSBryan O'DonoghueBL2_SOURCES += common/desc_image_load.c \ 35172e55beSBryan O'Donoghue drivers/console/aarch32/console.S \ 36172e55beSBryan O'Donoghue drivers/delay_timer/delay_timer.c \ 37172e55beSBryan O'Donoghue drivers/mmc/mmc.c \ 38172e55beSBryan O'Donoghue drivers/io/io_block.c \ 39172e55beSBryan O'Donoghue drivers/io/io_fip.c \ 40172e55beSBryan O'Donoghue drivers/io/io_memmap.c \ 41172e55beSBryan O'Donoghue drivers/io/io_storage.c \ 42172e55beSBryan O'Donoghue drivers/imx/timer/imx_gpt.c \ 43172e55beSBryan O'Donoghue drivers/imx/uart/imx_uart.c \ 44172e55beSBryan O'Donoghue drivers/imx/uart/imx_crash_uart.S \ 45172e55beSBryan O'Donoghue drivers/imx/usdhc/imx_usdhc.c \ 46172e55beSBryan O'Donoghue lib/aarch32/arm32_aeabi_divmod.c \ 47172e55beSBryan O'Donoghue lib/aarch32/arm32_aeabi_divmod_a32.S \ 48172e55beSBryan O'Donoghue lib/cpus/aarch32/cortex_a7.S \ 49172e55beSBryan O'Donoghue lib/optee/optee_utils.c \ 50172e55beSBryan O'Donoghue plat/imx/common/imx_aips.c \ 51172e55beSBryan O'Donoghue plat/imx/common/imx_caam.c \ 52172e55beSBryan O'Donoghue plat/imx/common/imx_clock.c \ 53172e55beSBryan O'Donoghue plat/imx/common/imx_csu.c \ 54172e55beSBryan O'Donoghue plat/imx/common/imx_io_mux.c \ 55172e55beSBryan O'Donoghue plat/imx/common/imx_snvs.c \ 56172e55beSBryan O'Donoghue plat/imx/common/imx_wdog.c \ 57172e55beSBryan O'Donoghue plat/imx/common/imx7_clock.c \ 58172e55beSBryan O'Donoghue plat/imx/imx7/warp7/aarch32/warp7_helpers.S \ 59172e55beSBryan O'Donoghue plat/imx/imx7/warp7/warp7_bl2_el3_setup.c \ 60172e55beSBryan O'Donoghue plat/imx/imx7/warp7/warp7_bl2_mem_params_desc.c \ 61172e55beSBryan O'Donoghue plat/imx/imx7/warp7/warp7_io_storage.c \ 62172e55beSBryan O'Donoghue plat/imx/imx7/warp7/warp7_image_load.c \ 63172e55beSBryan O'Donoghue ${XLAT_TABLES_LIB_SRCS} 64172e55beSBryan O'Donoghue 65*a41d81cdSBryan O'Donoghueifneq (${TRUSTED_BOARD_BOOT},0) 66*a41d81cdSBryan O'Donoghue 67*a41d81cdSBryan O'Donoghueinclude drivers/auth/mbedtls/mbedtls_crypto.mk 68*a41d81cdSBryan O'Donoghueinclude drivers/auth/mbedtls/mbedtls_x509.mk 69*a41d81cdSBryan O'Donoghue 70*a41d81cdSBryan O'DonoghueAUTH_SOURCES := drivers/auth/auth_mod.c \ 71*a41d81cdSBryan O'Donoghue drivers/auth/crypto_mod.c \ 72*a41d81cdSBryan O'Donoghue drivers/auth/img_parser_mod.c \ 73*a41d81cdSBryan O'Donoghue drivers/auth/tbbr/tbbr_cot.c 74*a41d81cdSBryan O'Donoghue 75*a41d81cdSBryan O'DonoghueBL2_SOURCES += ${AUTH_SOURCES} \ 76*a41d81cdSBryan O'Donoghue plat/common/tbbr/plat_tbbr.c \ 77*a41d81cdSBryan O'Donoghue plat/imx/imx7/warp7/warp7_trusted_boot.c \ 78*a41d81cdSBryan O'Donoghue plat/imx/imx7/warp7/warp7_rotpk.S 79*a41d81cdSBryan O'Donoghue 80*a41d81cdSBryan O'DonoghueROT_KEY = $(BUILD_PLAT)/rot_key.pem 81*a41d81cdSBryan O'DonoghueROTPK_HASH = $(BUILD_PLAT)/rotpk_sha256.bin 82*a41d81cdSBryan O'Donoghue 83*a41d81cdSBryan O'Donoghue$(eval $(call add_define_val,ROTPK_HASH,'"$(ROTPK_HASH)"')) 84*a41d81cdSBryan O'Donoghue$(eval $(call MAKE_LIB_DIRS)) 85*a41d81cdSBryan O'Donoghue 86*a41d81cdSBryan O'Donoghue$(BUILD_PLAT)/bl2/warp7_rotpk.o: $(ROTPK_HASH) 87*a41d81cdSBryan O'Donoghue 88*a41d81cdSBryan O'Donoghuecertificates: $(ROT_KEY) 89*a41d81cdSBryan O'Donoghue 90*a41d81cdSBryan O'Donoghue$(ROT_KEY): | $(BUILD_PLAT) 91*a41d81cdSBryan O'Donoghue @echo " OPENSSL $@" 92*a41d81cdSBryan O'Donoghue @if [ ! -f $(ROT_KEY) ]; then \ 93*a41d81cdSBryan O'Donoghue openssl genrsa 2048 > $@ 2>/dev/null; \ 94*a41d81cdSBryan O'Donoghue fi 95*a41d81cdSBryan O'Donoghue 96*a41d81cdSBryan O'Donoghue$(ROTPK_HASH): $(ROT_KEY) 97*a41d81cdSBryan O'Donoghue @echo " OPENSSL $@" 98*a41d81cdSBryan O'Donoghue $(Q)openssl rsa -in $< -pubout -outform DER 2>/dev/null |\ 99*a41d81cdSBryan O'Donoghue openssl dgst -sha256 -binary > $@ 2>/dev/null 100*a41d81cdSBryan O'Donoghueendif 101*a41d81cdSBryan O'Donoghue 102172e55beSBryan O'Donoghue# Build config flags 103172e55beSBryan O'Donoghue# ------------------ 104172e55beSBryan O'Donoghue 105172e55beSBryan O'DonoghueWORKAROUND_CVE_2017_5715 := 0 106172e55beSBryan O'Donoghue 107172e55beSBryan O'Donoghue# Enable reset to BL31 by default 108172e55beSBryan O'DonoghueRESET_TO_BL31 := 0 109172e55beSBryan O'Donoghue 110172e55beSBryan O'Donoghue# Non-TF Boot ROM 111172e55beSBryan O'DonoghueBL2_AT_EL3 := 1 112172e55beSBryan O'Donoghue 113172e55beSBryan O'Donoghue# Indicate single-core 114172e55beSBryan O'DonoghueCOLD_BOOT_SINGLE_CPU := 1 115172e55beSBryan O'Donoghue 116172e55beSBryan O'Donoghue# Have different sections for code and rodata 117172e55beSBryan O'DonoghueSEPARATE_CODE_AND_RODATA := 1 118172e55beSBryan O'Donoghue 119172e55beSBryan O'Donoghue# Use Coherent memory 120172e55beSBryan O'DonoghueUSE_COHERENT_MEM := 1 121172e55beSBryan O'Donoghue 122172e55beSBryan O'Donoghue# PLAT_WARP7_UART 123172e55beSBryan O'DonoghuePLAT_WARP7_UART :=1 124172e55beSBryan O'Donoghue$(eval $(call add_define,PLAT_WARP7_UART)) 125172e55beSBryan O'Donoghue 126*a41d81cdSBryan O'Donoghue# Add the build options to pack BLx images and kernel device tree 127*a41d81cdSBryan O'Donoghue# in the FIP if the platform requires. 128*a41d81cdSBryan O'Donoghueifneq ($(BL2),) 129*a41d81cdSBryan O'Donoghue$(eval $(call TOOL_ADD_PAYLOAD,${BUILD_PLAT}/tb_fw.crt,--tb-fw-cert)) 130*a41d81cdSBryan O'Donoghueendif 131*a41d81cdSBryan O'Donoghueifneq ($(BL32_EXTRA1),) 132*a41d81cdSBryan O'Donoghue$(eval $(call TOOL_ADD_IMG,BL32_EXTRA1,--tos-fw-extra1)) 133*a41d81cdSBryan O'Donoghueendif 134*a41d81cdSBryan O'Donoghueifneq ($(BL32_EXTRA2),) 135*a41d81cdSBryan O'Donoghue$(eval $(call TOOL_ADD_IMG,BL32_EXTRA2,--tos-fw-extra2)) 136*a41d81cdSBryan O'Donoghueendif 137*a41d81cdSBryan O'Donoghueifneq ($(HW_CONFIG),) 138*a41d81cdSBryan O'Donoghue$(eval $(call TOOL_ADD_IMG,HW_CONFIG,--hw-config)) 139*a41d81cdSBryan O'Donoghueendif 140*a41d81cdSBryan O'Donoghue 141172e55beSBryan O'Donoghue# Verify build config 142172e55beSBryan O'Donoghue# ------------------- 143172e55beSBryan O'Donoghue 144172e55beSBryan O'Donoghueifeq (${ARCH},aarch64) 145172e55beSBryan O'Donoghue $(error Error: AArch64 not supported on i.mx7) 146172e55beSBryan O'Donoghueendif 147