1a189a570SPascal BrandCFG_LTC_OPTEE_THREAD ?= y 2a189a570SPascal Brand 3*6d96f208Syanyan-wrs# When used together with ARM Trusted FW, arguments shall 4*6d96f208Syanyan-wrs# come from the Firwmware. Do not allow built-in arguments 5*6d96f208Syanyan-wrs 6*6d96f208Syanyan-wrsifeq ($(CFG_BUILT_IN_ARGS),y) 7*6d96f208Syanyan-wrsifeq ($(CFG_WITH_ARM_TRUSTED_FW),y) 8*6d96f208Syanyan-wrs$(error error: CFG_BUILD_IN_ARGS is incompatible with CFG_WITH_ARM_TRUSTED_FW) 9*6d96f208Syanyan-wrsendif 10*6d96f208Syanyan-wrsendif 11*6d96f208Syanyan-wrs 12abe38974SJens Wiklanderifeq ($(CFG_ARM64_core),y) 137a976658SJerome ForissierCFG_KERN_LINKER_FORMAT ?= elf64-littleaarch64 147a976658SJerome ForissierCFG_KERN_LINKER_ARCH ?= aarch64 15abe38974SJens Wiklanderendif 16abe38974SJens Wiklanderifeq ($(CFG_ARM32_core),y) 177a976658SJerome ForissierCFG_KERN_LINKER_FORMAT ?= elf32-littlearm 187a976658SJerome ForissierCFG_KERN_LINKER_ARCH ?= arm 197a976658SJerome Forissierendif 207a976658SJerome Forissier 210de9a5fbSJens Wiklanderifeq ($(CFG_TA_FLOAT_SUPPORT),y) 220de9a5fbSJens Wiklander# Use hard-float for floating point support in user TAs instead of 230de9a5fbSJens Wiklander# soft-float 240de9a5fbSJens WiklanderCFG_WITH_VFP ?= y 250de9a5fbSJens Wiklanderifeq ($(CFG_ARM64_core),y) 260de9a5fbSJens Wiklander# AArch64 has no fallback to soft-float 270de9a5fbSJens Wiklander$(call force,CFG_WITH_VFP,y) 280de9a5fbSJens Wiklanderendif 290de9a5fbSJens Wiklanderifeq ($(CFG_WITH_VFP),y) 300de9a5fbSJens Wiklanderplatform-hard-float-enabled := y 310de9a5fbSJens Wiklanderendif 320de9a5fbSJens Wiklanderendif 330de9a5fbSJens Wiklander 341d171f95SJens Wiklanderifeq ($(CFG_WITH_PAGER),y) 351d171f95SJens Wiklanderifeq ($(CFG_CORE_SANITIZE_KADDRESS),y) 361d171f95SJens Wiklander$(error Error: CFG_CORE_SANITIZE_KADDRESS not compatible with CFG_WITH_PAGER) 371d171f95SJens Wiklanderendif 381d171f95SJens Wiklanderendif 39739804b5SJens Wiklander 40739804b5SJens Wiklandercore-platform-cppflags += -I$(arch-dir)/include 41739804b5SJens Wiklandercore-platform-subdirs += \ 42739804b5SJens Wiklander $(addprefix $(arch-dir)/, kernel mm tee sta) $(platform-dir) 43739804b5SJens Wiklander 44739804b5SJens Wiklanderifneq ($(CFG_WITH_ARM_TRUSTED_FW),y) 45739804b5SJens Wiklandercore-platform-subdirs += $(arch-dir)/sm 46739804b5SJens Wiklanderendif 47739804b5SJens Wiklander 48739804b5SJens Wiklanderarm64-platform-cppflags += -DARM64=1 -D__LP64__=1 49739804b5SJens Wiklanderarm32-platform-cppflags += -DARM32=1 -D__ILP32__=1 50739804b5SJens Wiklander 51739804b5SJens Wiklanderplatform-cflags-generic ?= -g -ffunction-sections -fdata-sections -pipe 52739804b5SJens Wiklanderplatform-aflags-generic ?= -g -pipe 53739804b5SJens Wiklander 54739804b5SJens Wiklanderarm32-platform-cflags-no-hard-float ?= -mno-apcs-float -mfloat-abi=soft 550de9a5fbSJens Wiklanderarm32-platform-cflags-hard-float ?= -mfloat-abi=hard -funsafe-math-optimizations 56202cacd6SJens Wiklanderarm32-platform-cflags-generic ?= -mthumb -mthumb-interwork \ 57739804b5SJens Wiklander -fno-short-enums -fno-common -mno-unaligned-access 58739804b5SJens Wiklanderarm32-platform-aflags-no-hard-float ?= 59739804b5SJens Wiklander 60739804b5SJens Wiklanderarm64-platform-cflags-no-hard-float ?= -mgeneral-regs-only 610de9a5fbSJens Wiklanderarm64-platform-cflags-hard-float ?= 62739804b5SJens Wiklanderarm64-platform-cflags-generic ?= -mstrict-align 63739804b5SJens Wiklander 64739804b5SJens Wiklanderifeq ($(DEBUG),1) 65739804b5SJens Wiklanderplatform-cflags-optimization ?= -O0 66739804b5SJens Wiklanderelse 67739804b5SJens Wiklanderplatform-cflags-optimization ?= -Os 68739804b5SJens Wiklanderendif 69739804b5SJens Wiklander 70739804b5SJens Wiklanderplatform-cflags-debug-info ?= -g3 71739804b5SJens Wiklanderplatform-aflags-debug-info ?= 72739804b5SJens Wiklander 73739804b5SJens Wiklandercore-platform-cflags += $(platform-cflags-optimization) 74739804b5SJens Wiklandercore-platform-cflags += $(platform-cflags-generic) 75739804b5SJens Wiklandercore-platform-cflags += $(platform-cflags-debug-info) 76739804b5SJens Wiklander 77739804b5SJens Wiklandercore-platform-aflags += $(platform-aflags-generic) 78739804b5SJens Wiklandercore-platform-aflags += $(platform-aflags-debug-info) 79739804b5SJens Wiklander 807a976658SJerome Forissierifeq ($(CFG_ARM64_core),y) 81b09cddcaSJerome Forissierarch-bits-core := 64 827a976658SJerome Forissiercore-platform-cppflags += $(arm64-platform-cppflags) 837a976658SJerome Forissiercore-platform-cflags += $(arm64-platform-cflags) 84739804b5SJens Wiklandercore-platform-cflags += $(arm64-platform-cflags-generic) 85739804b5SJens Wiklandercore-platform-cflags += $(arm64-platform-cflags-no-hard-float) 867a976658SJerome Forissiercore-platform-aflags += $(arm64-platform-aflags) 877a976658SJerome Forissierelse 88b09cddcaSJerome Forissierarch-bits-core := 32 897a976658SJerome Forissiercore-platform-cppflags += $(arm32-platform-cppflags) 907a976658SJerome Forissiercore-platform-cflags += $(arm32-platform-cflags) 91739804b5SJens Wiklandercore-platform-cflags += $(arm32-platform-cflags-no-hard-float) 92923c1f34SJens Wiklanderifeq ($(CFG_CORE_UNWIND),y) 93923c1f34SJens Wiklandercore-platform-cflags += -funwind-tables 94923c1f34SJens Wiklanderendif 95739804b5SJens Wiklandercore-platform-cflags += $(arm32-platform-cflags-generic) 96739804b5SJens Wiklandercore-platform-aflags += $(core_arm32-platform-aflags) 977a976658SJerome Forissiercore-platform-aflags += $(arm32-platform-aflags) 98abe38974SJens Wiklanderendif 99739804b5SJens Wiklander 100739804b5SJens Wiklanderifneq ($(filter ta_arm32,$(ta-targets)),) 101739804b5SJens Wiklander# Variables for ta-target/sm "ta_arm32" 102739804b5SJens WiklanderCFG_ARM32_ta_arm32 := y 103b09cddcaSJerome Forissierarch-bits-ta_arm32 := 32 104739804b5SJens Wiklanderta_arm32-platform-cppflags += $(arm32-platform-cppflags) 105739804b5SJens Wiklanderta_arm32-platform-cflags += $(arm32-platform-cflags) 106739804b5SJens Wiklanderta_arm32-platform-cflags += $(platform-cflags-optimization) 107739804b5SJens Wiklanderta_arm32-platform-cflags += $(platform-cflags-debug-info) 108739804b5SJens Wiklanderta_arm32-platform-cflags += -fpie 109739804b5SJens Wiklanderta_arm32-platform-cflags += $(arm32-platform-cflags-generic) 1100de9a5fbSJens Wiklanderifeq ($(platform-hard-float-enabled),y) 1110de9a5fbSJens Wiklanderta_arm32-platform-cflags += $(arm32-platform-cflags-hard-float) 1120de9a5fbSJens Wiklanderelse 113739804b5SJens Wiklanderta_arm32-platform-cflags += $(arm32-platform-cflags-no-hard-float) 1140de9a5fbSJens Wiklanderendif 115739804b5SJens Wiklanderta_arm32-platform-aflags += $(platform-aflags-debug-info) 116739804b5SJens Wiklanderta_arm32-platform-aflags += $(arm32-platform-aflags) 117739804b5SJens Wiklander 118739804b5SJens Wiklanderta-mk-file-export-vars-ta_arm32 += CFG_ARM32_ta_arm32 119739804b5SJens Wiklanderta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-cppflags 120739804b5SJens Wiklanderta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-cflags 121739804b5SJens Wiklanderta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-aflags 122c042fbefSJerome Forissier 123c042fbefSJerome Forissierta-mk-file-export-add-ta_arm32 += CROSS_COMPILE32 ?= $$(CROSS_COMPILE)_nl_ 124c042fbefSJerome Forissierta-mk-file-export-add-ta_arm32 += CROSS_COMPILE_ta_arm32 ?= $$(CROSS_COMPILE32)_nl_ 125739804b5SJens Wiklanderendif 126739804b5SJens Wiklander 127739804b5SJens Wiklanderifneq ($(filter ta_arm64,$(ta-targets)),) 128739804b5SJens Wiklander# Variables for ta-target/sm "ta_arm64" 129739804b5SJens WiklanderCFG_ARM64_ta_arm64 := y 130b09cddcaSJerome Forissierarch-bits-ta_arm64 := 64 131739804b5SJens Wiklanderta_arm64-platform-cppflags += $(arm64-platform-cppflags) 132739804b5SJens Wiklanderta_arm64-platform-cflags += $(arm64-platform-cflags) 133739804b5SJens Wiklanderta_arm64-platform-cflags += $(platform-cflags-optimization) 134739804b5SJens Wiklanderta_arm64-platform-cflags += $(platform-cflags-debug-info) 135739804b5SJens Wiklanderta_arm64-platform-cflags += -fpie 136739804b5SJens Wiklanderta_arm64-platform-cflags += $(arm64-platform-cflags-generic) 1370de9a5fbSJens Wiklanderifeq ($(platform-hard-float-enabled),y) 1380de9a5fbSJens Wiklanderta_arm64-platform-cflags += $(arm64-platform-cflags-hard-float) 1390de9a5fbSJens Wiklanderelse 140739804b5SJens Wiklanderta_arm64-platform-cflags += $(arm64-platform-cflags-no-hard-float) 1410de9a5fbSJens Wiklanderendif 142739804b5SJens Wiklanderta_arm64-platform-aflags += $(platform-aflags-debug-info) 143739804b5SJens Wiklanderta_arm64-platform-aflags += $(arm64-platform-aflags) 144739804b5SJens Wiklander 145739804b5SJens Wiklanderta-mk-file-export-vars-ta_arm64 += CFG_ARM64_ta_arm64 146739804b5SJens Wiklanderta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-cppflags 147739804b5SJens Wiklanderta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-cflags 148739804b5SJens Wiklanderta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-aflags 149c042fbefSJerome Forissier 150c042fbefSJerome Forissierta-mk-file-export-add-ta_arm64 += CROSS_COMPILE64 ?= $$(CROSS_COMPILE)_nl_ 151c042fbefSJerome Forissierta-mk-file-export-add-ta_arm64 += CROSS_COMPILE_ta_arm64 ?= $$(CROSS_COMPILE64)_nl_ 152739804b5SJens Wiklanderendif 153b09cddcaSJerome Forissier 154b09cddcaSJerome Forissier# Set cross compiler prefix for each submodule 155b09cddcaSJerome Forissier$(foreach sm, core $(ta-targets), $(eval CROSS_COMPILE_$(sm) ?= $(CROSS_COMPILE$(arch-bits-$(sm))))) 156