Lines Matching +full:- +full:pageable
3 arch-bits-core := 64
5 arch-bits-core := 32
7 CROSS_COMPILE_core := $(CROSS_COMPILE$(arch-bits-core))
11 # Defines the cc-option macro using the compiler set for the core module
12 include mk/cc-option.mk
37 CFG_KERN_LINKER_FORMAT ?= elf64-littleaarch64
49 CFG_KERN_LINKER_FORMAT ?= elf32-littlearm
54 # Use hard-float for floating point support in user TAs instead of
55 # soft-float
58 # AArch64 has no fallback to soft-float
62 arm64-platform-hard-float-enabled := y
64 arm32-platform-hard-float-enabled := y
69 # Adds protection against CVE-2017-5715 also know as Spectre
71 # See also https://developer.arm.com/-/media/Files/pdf/Cache_Speculation_Side-channels.pdf
75 # secure EL0 instead of non-secure world, including mitigation for
76 # CVE-2022-23960.
80 # (https://github.com/nccgroup/cachegrab), which uses non-secure interrupts
88 # Adds workarounds against if ARM core is configured with Non-maskable FIQ
91 # prohibiting FIQ signal usage in OP-TEE and applying some tweaks to make sure
107 # SPMC configuration "S-EL1 SPMC" where SPM Core is implemented at S-EL1,
108 # that is, OP-TEE.
114 # SPMC configuration "S-EL2 SPMC" where SPM Core is implemented at S-EL2,
115 # that is, the hypervisor sandboxing OP-TEE
121 # Enable support in OP-TEE to relocate itself to allow it to run from a
126 # is, in TF-A
142 ifeq ($(CFG_CORE_PHYS_RELOCATABLE)-$(CFG_WITH_PAGER),y-y)
151 ifeq ($(CFG_CORE_FFA)-$(CFG_WITH_PAGER),y-y)
170 # FIQ signals a foreign non-secure interrupt or a managed exit pending
172 # IRQ signals a foreign non-secure interrupt or a managed exit pending
179 # Addresses CVE-2017-5715 (aka Meltdown) known to affect Arm Cortex-A75
188 # interrupt. Setting it to a non-zero number enables support for using an
189 # Arm-GIC to notify normal world. This config variable should use a value
198 # CFG_PAGEABLE_ADDR: if defined, forces pageable data physical address.
212 core-platform-cppflags += -I$(arch-dir)/include
213 core-platform-subdirs += \
214 $(addprefix $(arch-dir)/, kernel crypto mm tee) $(platform-dir)
217 core-platform-subdirs += $(arch-dir)/sm
221 core-platform-subdirs += $(arch-dir)/tests
224 arm64-platform-cppflags += -DARM64=1 -D__LP64__=1
225 arm32-platform-cppflags += -DARM32=1 -D__ILP32__=1
227 platform-cflags-generic ?= -ffunction-sections -fdata-sections -pipe
228 platform-aflags-generic ?= -pipe
230 arm32-platform-aflags += -marm
232 arm32-platform-cflags-no-hard-float ?= -mfloat-abi=soft
233 arm32-platform-cflags-hard-float ?= -mfloat-abi=hard -funsafe-math-optimizations
234 arm32-platform-cflags-generic-thumb ?= -mthumb \
235 -fno-short-enums -fno-common -mno-unaligned-access
236 arm32-platform-cflags-generic-arm ?= -marm -fno-omit-frame-pointer -mapcs \
237 -fno-short-enums -fno-common -mno-unaligned-access
238 arm32-platform-aflags-no-hard-float ?=
240 arm64-platform-cflags-no-hard-float ?= -mgeneral-regs-only
241 arm64-platform-cflags-hard-float ?=
242 arm64-platform-cflags-generic := -mstrict-align $(call cc-option,-mno-outline-atomics,)
245 arm64-platform-cflags += -march=armv8.5-a+memtag
246 arm64-platform-aflags += -march=armv8.5-a+memtag
249 platform-cflags-optimization ?= -O$(CFG_CC_OPT_LEVEL)
252 platform-cflags-debug-info ?= -g3
253 platform-aflags-debug-info ?= -g
256 core-platform-cflags += $(platform-cflags-optimization)
257 core-platform-cflags += $(platform-cflags-generic)
258 core-platform-cflags += $(platform-cflags-debug-info)
260 core-platform-aflags += $(platform-aflags-generic)
261 core-platform-aflags += $(platform-aflags-debug-info)
263 ifeq ($(call cfg-one-enabled, CFG_CORE_ASLR CFG_CORE_PHYS_RELOCATABLE),y)
264 core-platform-cflags += -fpie
268 bp-core-opt := $(call cc-option,-mbranch-protection=pac-ret+leaf)
272 bp-core-opt := $(call cc-option,-mbranch-protection=bti)
275 ifeq (y-y,$(CFG_CORE_PAUTH)-$(CFG_CORE_BTI))
276 bp-core-opt := $(call cc-option,-mbranch-protection=pac-ret+leaf+bti)
280 ifeq (,$(bp-core-opt))
281 $(error -mbranch-protection not supported)
283 core-platform-cflags += $(bp-core-opt)
287 core-platform-cppflags += $(arm64-platform-cppflags)
288 core-platform-cflags += $(arm64-platform-cflags)
289 core-platform-cflags += $(arm64-platform-cflags-generic)
290 core-platform-cflags += $(arm64-platform-cflags-no-hard-float)
291 core-platform-aflags += $(arm64-platform-aflags)
293 core-platform-cppflags += $(arm32-platform-cppflags)
294 core-platform-cflags += $(arm32-platform-cflags)
295 core-platform-cflags += $(arm32-platform-cflags-no-hard-float)
297 core-platform-cflags += -funwind-tables
300 core-platform-cflags += $(arm32-platform-cflags-generic-arm)
302 core-platform-cflags += $(arm32-platform-cflags-generic-thumb)
304 core-platform-aflags += $(core_arm32-platform-aflags)
305 core-platform-aflags += $(arm32-platform-aflags)
308 # Provide default supported-ta-targets if not set by the platform config
309 ifeq (,$(supported-ta-targets))
310 supported-ta-targets = ta_arm32
312 supported-ta-targets += ta_arm64
316 ta-targets := $(if $(CFG_USER_TA_TARGETS),$(filter $(supported-ta-targets),$(CFG_USER_TA_TARGETS)),$(supported-ta-targets))
317 unsup-targets := $(filter-out $(ta-targets),$(CFG_USER_TA_TARGETS))
318 ifneq (,$(unsup-targets))
319 $(error CFG_USER_TA_TARGETS contains unsupported value(s): $(unsup-targets). Valid values: $(supported-ta-targets))
322 ifneq ($(filter ta_arm32,$(ta-targets)),)
323 # Variables for ta-target/sm "ta_arm32"
325 arch-bits-ta_arm32 := 32
326 ta_arm32-platform-cppflags += $(arm32-platform-cppflags)
327 ta_arm32-platform-cflags += $(arm32-platform-cflags)
328 ta_arm32-platform-cflags += $(platform-cflags-optimization)
329 ta_arm32-platform-cflags += $(platform-cflags-debug-info)
330 ta_arm32-platform-cflags += -fpic
336 ta_arm32-platform-cflags += $(arm32-platform-cflags-generic-arm)
338 ta_arm32-platform-cflags += $(arm32-platform-cflags-generic-thumb)
341 ifeq ($(arm32-platform-hard-float-enabled),y)
342 ta_arm32-platform-cflags += $(arm32-platform-cflags-hard-float)
344 ta_arm32-platform-cflags += $(arm32-platform-cflags-no-hard-float)
347 ta_arm32-platform-cflags += -funwind-tables
349 ta_arm32-platform-aflags += $(platform-aflags-generic)
350 ta_arm32-platform-aflags += $(platform-aflags-debug-info)
351 ta_arm32-platform-aflags += $(arm32-platform-aflags)
353 ta_arm32-platform-cxxflags += -fpic
354 ta_arm32-platform-cxxflags += $(arm32-platform-cxxflags)
355 ta_arm32-platform-cxxflags += $(platform-cflags-optimization)
356 ta_arm32-platform-cxxflags += $(platform-cflags-debug-info)
358 ifeq ($(arm32-platform-hard-float-enabled),y)
359 ta_arm32-platform-cxxflags += $(arm32-platform-cflags-hard-float)
361 ta_arm32-platform-cxxflags += $(arm32-platform-cflags-no-hard-float)
364 ta-mk-file-export-vars-ta_arm32 += CFG_ARM32_ta_arm32
365 ta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-cppflags
366 ta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-cflags
367 ta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-aflags
368 ta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-cxxflags
370 ta-mk-file-export-add-ta_arm32 += CROSS_COMPILE ?= arm-linux-gnueabihf-_nl_
371 ta-mk-file-export-add-ta_arm32 += CROSS_COMPILE32 ?= $$(CROSS_COMPILE)_nl_
372 ta-mk-file-export-add-ta_arm32 += CROSS_COMPILE_ta_arm32 ?= $$(CROSS_COMPILE32)_nl_
373 ta-mk-file-export-add-ta_arm32 += COMPILER ?= gcc_nl_
374 ta-mk-file-export-add-ta_arm32 += COMPILER_ta_arm32 ?= $$(COMPILER)_nl_
375 ta-mk-file-export-add-ta_arm32 += PYTHON3 ?= python3_nl_
378 ifneq ($(filter ta_arm64,$(ta-targets)),)
379 # Variables for ta-target/sm "ta_arm64"
381 arch-bits-ta_arm64 := 64
382 ta_arm64-platform-cppflags += $(arm64-platform-cppflags)
383 ta_arm64-platform-cflags += $(arm64-platform-cflags)
384 ta_arm64-platform-cflags += $(platform-cflags-optimization)
385 ta_arm64-platform-cflags += $(platform-cflags-debug-info)
386 ta_arm64-platform-cflags += -fpic
387 ta_arm64-platform-cflags += $(arm64-platform-cflags-generic)
388 ifeq ($(arm64-platform-hard-float-enabled),y)
389 ta_arm64-platform-cflags += $(arm64-platform-cflags-hard-float)
391 ta_arm64-platform-cflags += $(arm64-platform-cflags-no-hard-float)
393 ta_arm64-platform-aflags += $(platform-aflags-generic)
394 ta_arm64-platform-aflags += $(platform-aflags-debug-info)
395 ta_arm64-platform-aflags += $(arm64-platform-aflags)
397 ta_arm64-platform-cxxflags += -fpic
398 ta_arm64-platform-cxxflags += $(platform-cflags-optimization)
399 ta_arm64-platform-cxxflags += $(platform-cflags-debug-info)
402 bp-ta-opt := $(call cc-option,-mbranch-protection=pac-ret+leaf)
406 bp-ta-opt := $(call cc-option,-mbranch-protection=bti)
409 ifeq (y-y,$(CFG_TA_PAUTH)-$(CFG_TA_BTI))
410 bp-ta-opt := $(call cc-option,-mbranch-protection=pac-ret+leaf+bti)
414 ifeq (,$(bp-ta-opt))
415 $(error -mbranch-protection not supported)
417 ta_arm64-platform-cflags += $(bp-ta-opt)
420 ta-mk-file-export-vars-ta_arm64 += CFG_ARM64_ta_arm64
421 ta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-cppflags
422 ta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-cflags
423 ta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-aflags
424 ta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-cxxflags
426 ta-mk-file-export-add-ta_arm64 += CROSS_COMPILE64 ?= $$(CROSS_COMPILE)_nl_
427 ta-mk-file-export-add-ta_arm64 += CROSS_COMPILE_ta_arm64 ?= $$(CROSS_COMPILE64)_nl_
428 ta-mk-file-export-add-ta_arm64 += COMPILER ?= gcc_nl_
429 ta-mk-file-export-add-ta_arm64 += COMPILER_ta_arm64 ?= $$(COMPILER)_nl_
430 ta-mk-file-export-add-ta_arm64 += PYTHON3 ?= python3_nl_
434 $(foreach sm, $(ta-targets), $(eval CROSS_COMPILE_$(sm) ?= $(CROSS_COMPILE$(arch-bits-$(sm)))))
436 arm32-sysreg-txt = core/arch/arm/kernel/arm32_sysreg.txt
437 arm32-sysregs-$(arm32-sysreg-txt)-h := arm32_sysreg.h
438 arm32-sysregs-$(arm32-sysreg-txt)-s := arm32_sysreg.S
439 arm32-sysregs += $(arm32-sysreg-txt)
442 arm32-gicv3-sysreg-txt = core/arch/arm/kernel/arm32_gicv3_sysreg.txt
443 arm32-sysregs-$(arm32-gicv3-sysreg-txt)-h := arm32_gicv3_sysreg.h
444 arm32-sysregs-$(arm32-gicv3-sysreg-txt)-s := arm32_gicv3_sysreg.S
445 arm32-sysregs += $(arm32-gicv3-sysreg-txt)
448 arm32-sysregs-out := $(out-dir)/$(sm)/include/generated
450 define process-arm32-sysreg
451 FORCE-GENSRC$(sm): $$(arm32-sysregs-out)/$$(arm32-sysregs-$(1)-h)
452 cleanfiles := $$(cleanfiles) $$(arm32-sysregs-out)/$$(arm32-sysregs-$(1)-h)
454 $$(arm32-sysregs-out)/$$(arm32-sysregs-$(1)-h): $(1) scripts/arm32_sysreg.py
455 @$(cmd-echo-silent) ' GEN $$@'
456 $(q)mkdir -p $$(dir $$@)
457 $(q)scripts/arm32_sysreg.py --guard __$$(arm32-sysregs-$(1)-h) \
460 FORCE-GENSRC$(sm): $$(arm32-sysregs-out)/$$(arm32-sysregs-$(1)-s)
461 cleanfiles := $$(cleanfiles) $$(arm32-sysregs-out)/$$(arm32-sysregs-$(1)-s)
463 $$(arm32-sysregs-out)/$$(arm32-sysregs-$(1)-s): $(1) scripts/arm32_sysreg.py
464 @$(cmd-echo-silent) ' GEN $$@'
465 $(q)mkdir -p $$(dir $$@)
466 $(q)scripts/arm32_sysreg.py --s_file < $$< > $$@
467 endef #process-arm32-sysreg
469 $(foreach sr, $(arm32-sysregs), $(eval $(call process-arm32-sysreg,$(sr))))