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