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 29CFG_CORE_RWDATA_NOEXEC ?= y 30CFG_CORE_RODATA_NOEXEC ?= n 31ifeq ($(CFG_CORE_RODATA_NOEXEC),y) 32$(call force,CFG_CORE_RWDATA_NOEXEC,y) 33endif 34 35ifeq ($(CFG_WITH_PAGER),y) 36ifeq ($(CFG_CORE_SANITIZE_KADDRESS),y) 37$(error Error: CFG_CORE_SANITIZE_KADDRESS not compatible with CFG_WITH_PAGER) 38endif 39endif 40 41ifeq ($(CFG_ARM32_core),y) 42# Configration directive related to ARMv7 optee boot arguments. 43# CFG_PAGEABLE_ADDR: if defined, forces pageable data physical address. 44# CFG_NS_ENTRY_ADDR: if defined, forces NS World physical entry address. 45# CFG_DT_ADDR: if defined, forces Device Tree data physical address. 46endif 47 48core-platform-cppflags += -I$(arch-dir)/include 49core-platform-subdirs += \ 50 $(addprefix $(arch-dir)/, kernel mm tee pta) $(platform-dir) 51 52ifneq ($(CFG_WITH_ARM_TRUSTED_FW),y) 53core-platform-subdirs += $(arch-dir)/sm 54endif 55 56arm64-platform-cppflags += -DARM64=1 -D__LP64__=1 57arm32-platform-cppflags += -DARM32=1 -D__ILP32__=1 58 59platform-cflags-generic ?= -g -ffunction-sections -fdata-sections -pipe 60platform-aflags-generic ?= -g -pipe 61 62arm32-platform-cflags-no-hard-float ?= -mno-apcs-float -mfloat-abi=soft 63arm32-platform-cflags-hard-float ?= -mfloat-abi=hard -funsafe-math-optimizations 64arm32-platform-cflags-generic ?= -mthumb -mthumb-interwork \ 65 -fno-short-enums -fno-common -mno-unaligned-access 66arm32-platform-aflags-no-hard-float ?= 67 68arm64-platform-cflags-no-hard-float ?= -mgeneral-regs-only 69arm64-platform-cflags-hard-float ?= 70arm64-platform-cflags-generic ?= -mstrict-align 71 72ifeq ($(DEBUG),1) 73platform-cflags-optimization ?= -O0 74else 75platform-cflags-optimization ?= -Os 76endif 77 78platform-cflags-debug-info ?= -g3 79platform-aflags-debug-info ?= 80 81core-platform-cflags += $(platform-cflags-optimization) 82core-platform-cflags += $(platform-cflags-generic) 83core-platform-cflags += $(platform-cflags-debug-info) 84 85core-platform-aflags += $(platform-aflags-generic) 86core-platform-aflags += $(platform-aflags-debug-info) 87 88ifeq ($(CFG_ARM64_core),y) 89arch-bits-core := 64 90core-platform-cppflags += $(arm64-platform-cppflags) 91core-platform-cflags += $(arm64-platform-cflags) 92core-platform-cflags += $(arm64-platform-cflags-generic) 93core-platform-cflags += $(arm64-platform-cflags-no-hard-float) 94core-platform-aflags += $(arm64-platform-aflags) 95else 96arch-bits-core := 32 97core-platform-cppflags += $(arm32-platform-cppflags) 98core-platform-cflags += $(arm32-platform-cflags) 99core-platform-cflags += $(arm32-platform-cflags-no-hard-float) 100ifeq ($(CFG_UNWIND),y) 101core-platform-cflags += -funwind-tables 102endif 103core-platform-cflags += $(arm32-platform-cflags-generic) 104core-platform-aflags += $(core_arm32-platform-aflags) 105core-platform-aflags += $(arm32-platform-aflags) 106endif 107 108ifneq ($(filter ta_arm32,$(ta-targets)),) 109# Variables for ta-target/sm "ta_arm32" 110CFG_ARM32_ta_arm32 := y 111arch-bits-ta_arm32 := 32 112ta_arm32-platform-cppflags += $(arm32-platform-cppflags) 113ta_arm32-platform-cflags += $(arm32-platform-cflags) 114ta_arm32-platform-cflags += $(platform-cflags-optimization) 115ta_arm32-platform-cflags += $(platform-cflags-debug-info) 116ta_arm32-platform-cflags += -fpie 117ta_arm32-platform-cflags += $(arm32-platform-cflags-generic) 118ifeq ($(platform-hard-float-enabled),y) 119ta_arm32-platform-cflags += $(arm32-platform-cflags-hard-float) 120else 121ta_arm32-platform-cflags += $(arm32-platform-cflags-no-hard-float) 122endif 123ifeq ($(CFG_UNWIND),y) 124ta_arm32-platform-cflags += -funwind-tables 125endif 126ta_arm32-platform-aflags += $(platform-aflags-debug-info) 127ta_arm32-platform-aflags += $(arm32-platform-aflags) 128 129ta-mk-file-export-vars-ta_arm32 += CFG_ARM32_ta_arm32 130ta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-cppflags 131ta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-cflags 132ta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-aflags 133 134ta-mk-file-export-add-ta_arm32 += CROSS_COMPILE32 ?= $$(CROSS_COMPILE)_nl_ 135ta-mk-file-export-add-ta_arm32 += CROSS_COMPILE_ta_arm32 ?= $$(CROSS_COMPILE32)_nl_ 136endif 137 138ifneq ($(filter ta_arm64,$(ta-targets)),) 139# Variables for ta-target/sm "ta_arm64" 140CFG_ARM64_ta_arm64 := y 141arch-bits-ta_arm64 := 64 142ta_arm64-platform-cppflags += $(arm64-platform-cppflags) 143ta_arm64-platform-cflags += $(arm64-platform-cflags) 144ta_arm64-platform-cflags += $(platform-cflags-optimization) 145ta_arm64-platform-cflags += $(platform-cflags-debug-info) 146ta_arm64-platform-cflags += -fpie 147ta_arm64-platform-cflags += $(arm64-platform-cflags-generic) 148ifeq ($(platform-hard-float-enabled),y) 149ta_arm64-platform-cflags += $(arm64-platform-cflags-hard-float) 150else 151ta_arm64-platform-cflags += $(arm64-platform-cflags-no-hard-float) 152endif 153ta_arm64-platform-aflags += $(platform-aflags-debug-info) 154ta_arm64-platform-aflags += $(arm64-platform-aflags) 155 156ta-mk-file-export-vars-ta_arm64 += CFG_ARM64_ta_arm64 157ta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-cppflags 158ta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-cflags 159ta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-aflags 160 161ta-mk-file-export-add-ta_arm64 += CROSS_COMPILE64 ?= $$(CROSS_COMPILE)_nl_ 162ta-mk-file-export-add-ta_arm64 += CROSS_COMPILE_ta_arm64 ?= $$(CROSS_COMPILE64)_nl_ 163endif 164 165# Set cross compiler prefix for each submodule 166$(foreach sm, core $(ta-targets), $(eval CROSS_COMPILE_$(sm) ?= $(CROSS_COMPILE$(arch-bits-$(sm))))) 167