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