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