mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 01:54:22 +00:00
Merge changes from topic "gr/build_refac" into integration
* changes: refactor(build): minor updates refactor(build): remove enabling feat fix(build): march handling with arch-features refactor(build): refactor mandatory options
This commit is contained in:
commit
c666a929c1
4 changed files with 106 additions and 37 deletions
20
Makefile
20
Makefile
|
@ -160,15 +160,6 @@ endif #(ARM_ARCH_MAJOR)
|
|||
################################################################################
|
||||
arch-features = ${ARM_ARCH_FEATURE}
|
||||
|
||||
# Set the compiler's architecture feature modifiers
|
||||
ifneq ($(arch-features), none)
|
||||
# Strip "none+" from arch-features
|
||||
arch-features := $(subst none+,,$(arch-features))
|
||||
march-directive := $(march-directive)+$(arch-features)
|
||||
# Print features
|
||||
$(info Arm Architecture Features specified: $(subst +, ,$(arch-features)))
|
||||
endif #(arch-features)
|
||||
|
||||
ifneq ($(findstring clang,$(notdir $(CC))),)
|
||||
ifneq ($(findstring armclang,$(notdir $(CC))),)
|
||||
TF_CFLAGS_aarch32 := -target arm-arm-none-eabi
|
||||
|
@ -232,8 +223,6 @@ endif #(AARCH32_INSTRUCTION_SET)
|
|||
TF_CFLAGS_aarch32 += -mno-unaligned-access
|
||||
TF_CFLAGS_aarch64 += -mgeneral-regs-only -mstrict-align
|
||||
|
||||
ASFLAGS += $(march-directive)
|
||||
|
||||
##############################################################################
|
||||
# WARNINGS Configuration
|
||||
###############################################################################
|
||||
|
@ -691,6 +680,7 @@ endif
|
|||
include ${MAKE_HELPERS_DIRECTORY}march.mk
|
||||
|
||||
TF_CFLAGS += $(march-directive)
|
||||
ASFLAGS += $(march-directive)
|
||||
|
||||
# This internal flag is common option which is set to 1 for scenarios
|
||||
# when the BL2 is running in EL3 level. This occurs in two scenarios -
|
||||
|
@ -1039,12 +1029,6 @@ ifeq (${ENABLE_RME},1)
|
|||
endif
|
||||
endif
|
||||
|
||||
# Determine if FEAT_RNG is supported
|
||||
ENABLE_FEAT_RNG = $(if $(findstring rng,${arch-features}),1,0)
|
||||
|
||||
# Determine if FEAT_SB is supported
|
||||
ENABLE_FEAT_SB = $(if $(findstring sb,${arch-features}),1,0)
|
||||
|
||||
ifeq ($(PSA_CRYPTO),1)
|
||||
$(info PSA_CRYPTO is an experimental feature)
|
||||
endif
|
||||
|
@ -1170,7 +1154,6 @@ $(eval $(call assert_booleans,\
|
|||
ENABLE_AMU_FCONF \
|
||||
AMU_RESTRICT_COUNTERS \
|
||||
ENABLE_ASSERTIONS \
|
||||
ENABLE_FEAT_SB \
|
||||
ENABLE_PIE \
|
||||
ENABLE_PMF \
|
||||
ENABLE_PSCI_STAT \
|
||||
|
@ -1267,6 +1250,7 @@ $(eval $(call assert_numerics,\
|
|||
ENABLE_FEAT_RNG_TRAP \
|
||||
ENABLE_FEAT_SEL2 \
|
||||
ENABLE_FEAT_TCR2 \
|
||||
ENABLE_FEAT_SB \
|
||||
ENABLE_FEAT_S2PIE \
|
||||
ENABLE_FEAT_S1PIE \
|
||||
ENABLE_FEAT_S2POE \
|
||||
|
|
|
@ -8,39 +8,56 @@
|
|||
# and enables them based on the configured architecture version.
|
||||
|
||||
# This file follows the following format:
|
||||
# - Enable mandatory feature if applicable to an Arch Version.
|
||||
# - Enable mandatory feature if not updated, as applicable to an Arch Version.
|
||||
# - By default disable any mandatory features if they have not been defined yet.
|
||||
# - Disable or enable any optional feature this would be enabled/disabled if needed by platform.
|
||||
|
||||
#
|
||||
################################################################################
|
||||
# Enable Mandatory features based on Arch versions.
|
||||
# Enable Mandatory features if not updated yet, based on Arch versions.
|
||||
################################################################################
|
||||
#
|
||||
|
||||
# Enable the features which are mandatory from ARCH version 8.1 and upwards.
|
||||
ifeq "8.1" "$(word 1, $(sort 8.1 $(ARM_ARCH_MAJOR).$(ARM_ARCH_MINOR)))"
|
||||
ENABLE_FEAT_PAN ?= 1
|
||||
ENABLE_FEAT_VHE ?= 1
|
||||
armv8-1-a-feats := ENABLE_FEAT_PAN ENABLE_FEAT_VHE
|
||||
|
||||
FEAT_LIST := ${armv8-1-a-feats}
|
||||
endif
|
||||
|
||||
# Enable the features which are mandatory from ARCH version 8.2 and upwards.
|
||||
ifeq "8.2" "$(word 1, $(sort 8.2 $(ARM_ARCH_MAJOR).$(ARM_ARCH_MINOR)))"
|
||||
ENABLE_FEAT_RAS ?= 1
|
||||
armv8-2-a-feats := ENABLE_FEAT_RAS
|
||||
# 8.1 Compliant
|
||||
armv8-2-a-feats += ${armv8-1-a-feats}
|
||||
|
||||
FEAT_LIST := ${armv8-2-a-feats}
|
||||
endif
|
||||
|
||||
# Enable the features which are mandatory from ARCH version 8.3 and upwards.
|
||||
ifeq "8.3" "$(word 1, $(sort 8.3 $(ARM_ARCH_MAJOR).$(ARM_ARCH_MINOR)))"
|
||||
# 8.2 Compliant
|
||||
armv8-3-a-feats += ${armv8-2-a-feats}
|
||||
|
||||
FEAT_LIST := ${armv8-3-a-feats}
|
||||
endif
|
||||
|
||||
# Enable the features which are mandatory from ARCH version 8.4 and upwards.
|
||||
ifeq "8.4" "$(word 1, $(sort 8.4 $(ARM_ARCH_MAJOR).$(ARM_ARCH_MINOR)))"
|
||||
ENABLE_FEAT_SEL2 ?= 1
|
||||
ENABLE_TRF_FOR_NS ?= 1
|
||||
ENABLE_FEAT_DIT ?= 1
|
||||
armv8-4-a-feats := ENABLE_FEAT_SEL2 ENABLE_TRF_FOR_NS ENABLE_FEAT_DIT
|
||||
# 8.3 Compliant
|
||||
armv8-4-a-feats += ${armv8-3-a-feats}
|
||||
|
||||
FEAT_LIST := ${armv8-4-a-feats}
|
||||
endif
|
||||
|
||||
# Enable the features which are mandatory from ARCH version 8.5 and upwards.
|
||||
ifeq "8.5" "$(word 1, $(sort 8.5 $(ARM_ARCH_MAJOR).$(ARM_ARCH_MINOR)))"
|
||||
ENABLE_FEAT_RNG ?= 1
|
||||
ENABLE_FEAT_SB ?= 1
|
||||
armv8-5-a-feats := ENABLE_FEAT_RNG ENABLE_FEAT_SB
|
||||
# 8.4 Compliant
|
||||
armv8-5-a-feats += ${armv8-4-a-feats}
|
||||
|
||||
FEAT_LIST := ${armv8-5-a-feats}
|
||||
# Enable Memory tagging, Branch Target Identification for aarch64 only.
|
||||
ifeq ($(ARCH), aarch64)
|
||||
mem_tag_arch_support ?= yes
|
||||
|
@ -50,23 +67,70 @@ endif
|
|||
|
||||
# Enable the features which are mandatory from ARCH version 8.6 and upwards.
|
||||
ifeq "8.6" "$(word 1, $(sort 8.6 $(ARM_ARCH_MAJOR).$(ARM_ARCH_MINOR)))"
|
||||
ENABLE_FEAT_ECV ?= 1
|
||||
ENABLE_FEAT_FGT ?= 1
|
||||
armv8-6-a-feats := ENABLE_FEAT_ECV ENABLE_FEAT_FGT
|
||||
# 8.5 Compliant
|
||||
armv8-6-a-feats += ${armv8-5-a-feats}
|
||||
FEAT_LIST := ${armv8-6-a-feats}
|
||||
endif
|
||||
|
||||
# Enable the features which are mandatory from ARCH version 8.7 and upwards.
|
||||
ifeq "8.7" "$(word 1, $(sort 8.7 $(ARM_ARCH_MAJOR).$(ARM_ARCH_MINOR)))"
|
||||
ENABLE_FEAT_HCX ?= 1
|
||||
armv8-7-a-feats := ENABLE_FEAT_HCX
|
||||
# 8.6 Compliant
|
||||
armv8-7-a-feats += ${armv8-6-a-feats}
|
||||
FEAT_LIST := ${armv8-7-a-feats}
|
||||
endif
|
||||
|
||||
# Enable the features which are mandatory from ARCH version 8.8 and upwards.
|
||||
ifeq "8.8" "$(word 1, $(sort 8.8 $(ARM_ARCH_MAJOR).$(ARM_ARCH_MINOR)))"
|
||||
# 8.7 Compliant
|
||||
armv8-7-a-feats += ${armv8-7-a-feats}
|
||||
FEAT_LIST := ${armv8-8-a-feats}
|
||||
endif
|
||||
|
||||
# Enable the features which are mandatory from ARCH version 8.9 and upwards.
|
||||
ifeq "8.9" "$(word 1, $(sort 8.9 $(ARM_ARCH_MAJOR).$(ARM_ARCH_MINOR)))"
|
||||
ENABLE_FEAT_TCR2 ?= 1
|
||||
armv8-9-a-feats := ENABLE_FEAT_TCR2
|
||||
# 8.8 Compliant
|
||||
armv8-9-a-feats += ${armv8-8-a-feats}
|
||||
FEAT_LIST := ${armv8-9-a-feats}
|
||||
endif
|
||||
|
||||
# Enable the features which are mandatory from ARCH version 9.0 and upwards.
|
||||
ifeq "9.0" "$(word 1, $(sort 9.0 $(ARM_ARCH_MAJOR).$(ARM_ARCH_MINOR)))"
|
||||
# 8.5 Compliant
|
||||
armv9-0-a-feats += ${armv8-5-a-feats}
|
||||
FEAT_LIST := ${armv9-0-a-feats}
|
||||
endif
|
||||
|
||||
# Enable the features which are mandatory from ARCH version 9.1 and upwards.
|
||||
ifeq "9.1" "$(word 1, $(sort 9.1 $(ARM_ARCH_MAJOR).$(ARM_ARCH_MINOR)))"
|
||||
# 8.6 and 9.0 Compliant
|
||||
armv9-1-a-feats += ${armv8-6-a-feats} ${armv9-0-a-feats}
|
||||
FEAT_LIST := ${armv9-1-a-feats}
|
||||
endif
|
||||
|
||||
# Enable the features which are mandatory from ARCH version 9.2 and upwards.
|
||||
ifeq "9.2" "$(word 1, $(sort 9.2 $(ARM_ARCH_MAJOR).$(ARM_ARCH_MINOR)))"
|
||||
# 8.7 and 9.1 Compliant
|
||||
armv9-2-a-feats += ${armv8-7-a-feats} ${armv9-1-a-feats}
|
||||
FEAT_LIST := ${armv9-2-a-feats}
|
||||
endif
|
||||
|
||||
# Enable the features which are mandatory from ARCH version 9.3 and upwards.
|
||||
ifeq "9.3" "$(word 1, $(sort 9.3 $(ARM_ARCH_MAJOR).$(ARM_ARCH_MINOR)))"
|
||||
# 8.8 and 9.2 Compliant
|
||||
armv9-3-a-feats += ${armv8-8-a-feats} ${armv9-2-a-feats}
|
||||
FEAT_LIST := ${armv9-3-a-feats}
|
||||
endif
|
||||
|
||||
# Set all FEAT_* in FEAT_LIST to '1' if they are not yet defined or set
|
||||
# from build commandline options or platform makefile.
|
||||
$(eval $(call default_ones, ${sort ${FEAT_LIST}}))
|
||||
|
||||
#
|
||||
################################################################################
|
||||
# Set mandatory features by default to zero.
|
||||
# Set mandatory features by default to zero, if they are not already updated.
|
||||
################################################################################
|
||||
#
|
||||
|
||||
|
@ -298,9 +362,6 @@ ENABLE_FEAT_S1POE ?= 0
|
|||
# 9.0
|
||||
#----
|
||||
|
||||
# Flag to enable Realm Management Extension (FEAT_RME).
|
||||
ENABLE_RME ?= 0
|
||||
|
||||
# Scalable Matrix Extension for non-secure world.
|
||||
ENABLE_SME_FOR_NS ?= 0
|
||||
|
||||
|
@ -326,6 +387,9 @@ endif
|
|||
# 9.2
|
||||
#----
|
||||
|
||||
# Flag to enable Realm Management Extension (FEAT_RME).
|
||||
ENABLE_RME ?= 0
|
||||
|
||||
# Scalable Matrix Extension version 2 for non-secure world.
|
||||
ENABLE_SME2_FOR_NS ?= 0
|
||||
|
||||
|
|
|
@ -50,6 +50,18 @@ define default_zeros
|
|||
$(foreach var,$1,$(eval $(call default_zero,$(var))))
|
||||
endef
|
||||
|
||||
# Convenience function for setting a variable to 1 if not previously set
|
||||
# $(eval $(call default_one,FOO))
|
||||
define default_one
|
||||
$(eval $(1) ?= 1)
|
||||
endef
|
||||
|
||||
# Convenience function for setting a list of variables to 1 if not previously set
|
||||
# $(eval $(call default_ones,FOO BAR))
|
||||
define default_ones
|
||||
$(foreach var,$1,$(eval $(call default_one,$(var))))
|
||||
endef
|
||||
|
||||
# Convenience function for adding build definitions
|
||||
# $(eval $(call add_define,FOO)) will have:
|
||||
# -DFOO if $(FOO) is empty; -DFOO=$(FOO) otherwise
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2023, Arm Limited. All rights reserved.
|
||||
# Copyright (c) 2023-2024, Arm Limited. All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
|
@ -82,4 +82,13 @@ endif # not clang
|
|||
|
||||
march-directive := -march=${provided-march}
|
||||
|
||||
# Set the compiler's architecture feature modifiers
|
||||
ifneq ($(arch-features), none)
|
||||
# Strip "none+" from arch-features
|
||||
arch-features := $(subst none+,,$(arch-features))
|
||||
march-directive := $(march-directive)+$(arch-features)
|
||||
# Print features
|
||||
$(info Arm Architecture Features specified: $(subst +, ,$(arch-features)))
|
||||
endif #(arch-features)
|
||||
|
||||
endif # MARCH_DIRECTIVE
|
||||
|
|
Loading…
Add table
Reference in a new issue