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