1CFG_LTC_OPTEE_THREAD ?= y 2# Size of emulated TrustZone protected SRAM, 360 kB. 3# Only applicable when paging is enabled. 4CFG_CORE_TZSRAM_EMUL_SIZE ?= 368640 5CFG_LPAE_ADDR_SPACE_SIZE ?= (1ull << 32) 6 7ifeq ($(CFG_ARM64_core),y) 8CFG_KERN_LINKER_FORMAT ?= elf64-littleaarch64 9CFG_KERN_LINKER_ARCH ?= aarch64 10endif 11ifeq ($(CFG_ARM32_core),y) 12CFG_KERN_LINKER_FORMAT ?= elf32-littlearm 13CFG_KERN_LINKER_ARCH ?= arm 14endif 15 16ifeq ($(CFG_TA_FLOAT_SUPPORT),y) 17# Use hard-float for floating point support in user TAs instead of 18# soft-float 19CFG_WITH_VFP ?= y 20ifeq ($(CFG_ARM64_core),y) 21# AArch64 has no fallback to soft-float 22$(call force,CFG_WITH_VFP,y) 23endif 24ifeq ($(CFG_WITH_VFP),y) 25platform-hard-float-enabled := y 26endif 27endif 28 29ifeq ($(CFG_WITH_PAGER),y) 30ifeq ($(CFG_CORE_SANITIZE_KADDRESS),y) 31$(error Error: CFG_CORE_SANITIZE_KADDRESS not compatible with CFG_WITH_PAGER) 32endif 33endif 34 35ifeq ($(CFG_ARM32_core),y) 36# Configration directive related to ARMv7 optee boot arguments. 37# CFG_PAGEABLE_ADDR: if defined, forces pageable data physical address. 38# CFG_NS_ENTRY_ADDR: if defined, forces NS World physical entry address. 39# CFG_DT_ADDR: if defined, forces Device Tree data physical address. 40endif 41 42core-platform-cppflags += -I$(arch-dir)/include 43core-platform-subdirs += \ 44 $(addprefix $(arch-dir)/, kernel mm tee pta) $(platform-dir) 45 46ifneq ($(CFG_WITH_ARM_TRUSTED_FW),y) 47core-platform-subdirs += $(arch-dir)/sm 48endif 49 50arm64-platform-cppflags += -DARM64=1 -D__LP64__=1 51arm32-platform-cppflags += -DARM32=1 -D__ILP32__=1 52 53platform-cflags-generic ?= -g -ffunction-sections -fdata-sections -pipe 54platform-aflags-generic ?= -g -pipe 55 56arm32-platform-cflags-no-hard-float ?= -mno-apcs-float -mfloat-abi=soft 57arm32-platform-cflags-hard-float ?= -mfloat-abi=hard -funsafe-math-optimizations 58arm32-platform-cflags-generic ?= -mthumb -mthumb-interwork \ 59 -fno-short-enums -fno-common -mno-unaligned-access 60arm32-platform-aflags-no-hard-float ?= 61 62arm64-platform-cflags-no-hard-float ?= -mgeneral-regs-only 63arm64-platform-cflags-hard-float ?= 64arm64-platform-cflags-generic ?= -mstrict-align 65 66ifeq ($(DEBUG),1) 67platform-cflags-optimization ?= -O0 68else 69platform-cflags-optimization ?= -Os 70endif 71 72platform-cflags-debug-info ?= -g3 73platform-aflags-debug-info ?= 74 75core-platform-cflags += $(platform-cflags-optimization) 76core-platform-cflags += $(platform-cflags-generic) 77core-platform-cflags += $(platform-cflags-debug-info) 78 79core-platform-aflags += $(platform-aflags-generic) 80core-platform-aflags += $(platform-aflags-debug-info) 81 82ifeq ($(CFG_ARM64_core),y) 83arch-bits-core := 64 84core-platform-cppflags += $(arm64-platform-cppflags) 85core-platform-cflags += $(arm64-platform-cflags) 86core-platform-cflags += $(arm64-platform-cflags-generic) 87core-platform-cflags += $(arm64-platform-cflags-no-hard-float) 88core-platform-aflags += $(arm64-platform-aflags) 89else 90arch-bits-core := 32 91core-platform-cppflags += $(arm32-platform-cppflags) 92core-platform-cflags += $(arm32-platform-cflags) 93core-platform-cflags += $(arm32-platform-cflags-no-hard-float) 94ifeq ($(CFG_CORE_UNWIND),y) 95core-platform-cflags += -funwind-tables 96endif 97core-platform-cflags += $(arm32-platform-cflags-generic) 98core-platform-aflags += $(core_arm32-platform-aflags) 99core-platform-aflags += $(arm32-platform-aflags) 100endif 101 102ifneq ($(filter ta_arm32,$(ta-targets)),) 103# Variables for ta-target/sm "ta_arm32" 104CFG_ARM32_ta_arm32 := y 105arch-bits-ta_arm32 := 32 106ta_arm32-platform-cppflags += $(arm32-platform-cppflags) 107ta_arm32-platform-cflags += $(arm32-platform-cflags) 108ta_arm32-platform-cflags += $(platform-cflags-optimization) 109ta_arm32-platform-cflags += $(platform-cflags-debug-info) 110ta_arm32-platform-cflags += -fpie 111ta_arm32-platform-cflags += $(arm32-platform-cflags-generic) 112ifeq ($(platform-hard-float-enabled),y) 113ta_arm32-platform-cflags += $(arm32-platform-cflags-hard-float) 114else 115ta_arm32-platform-cflags += $(arm32-platform-cflags-no-hard-float) 116endif 117ta_arm32-platform-aflags += $(platform-aflags-debug-info) 118ta_arm32-platform-aflags += $(arm32-platform-aflags) 119 120ta-mk-file-export-vars-ta_arm32 += CFG_ARM32_ta_arm32 121ta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-cppflags 122ta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-cflags 123ta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-aflags 124 125ta-mk-file-export-add-ta_arm32 += CROSS_COMPILE32 ?= $$(CROSS_COMPILE)_nl_ 126ta-mk-file-export-add-ta_arm32 += CROSS_COMPILE_ta_arm32 ?= $$(CROSS_COMPILE32)_nl_ 127endif 128 129ifneq ($(filter ta_arm64,$(ta-targets)),) 130# Variables for ta-target/sm "ta_arm64" 131CFG_ARM64_ta_arm64 := y 132arch-bits-ta_arm64 := 64 133ta_arm64-platform-cppflags += $(arm64-platform-cppflags) 134ta_arm64-platform-cflags += $(arm64-platform-cflags) 135ta_arm64-platform-cflags += $(platform-cflags-optimization) 136ta_arm64-platform-cflags += $(platform-cflags-debug-info) 137ta_arm64-platform-cflags += -fpie 138ta_arm64-platform-cflags += $(arm64-platform-cflags-generic) 139ifeq ($(platform-hard-float-enabled),y) 140ta_arm64-platform-cflags += $(arm64-platform-cflags-hard-float) 141else 142ta_arm64-platform-cflags += $(arm64-platform-cflags-no-hard-float) 143endif 144ta_arm64-platform-aflags += $(platform-aflags-debug-info) 145ta_arm64-platform-aflags += $(arm64-platform-aflags) 146 147ta-mk-file-export-vars-ta_arm64 += CFG_ARM64_ta_arm64 148ta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-cppflags 149ta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-cflags 150ta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-aflags 151 152ta-mk-file-export-add-ta_arm64 += CROSS_COMPILE64 ?= $$(CROSS_COMPILE)_nl_ 153ta-mk-file-export-add-ta_arm64 += CROSS_COMPILE_ta_arm64 ?= $$(CROSS_COMPILE64)_nl_ 154endif 155 156# Set cross compiler prefix for each submodule 157$(foreach sm, core $(ta-targets), $(eval CROSS_COMPILE_$(sm) ?= $(CROSS_COMPILE$(arch-bits-$(sm))))) 158