@ -20,27 +20,44 @@
# Enable the features which are mandatory from ARCH version 8.1 and upwards.
i f e q "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 }
e n d i f
# Enable the features which are mandatory from ARCH version 8.2 and upwards.
i f e q "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 }
e n d i f
# Enable the features which are mandatory from ARCH version 8.3 and upwards.
i f e q "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 }
e n d i f
# Enable the features which are mandatory from ARCH version 8.4 and upwards.
i f e q "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 }
e n d i f
# Enable the features which are mandatory from ARCH version 8.5 and upwards.
i f e q "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.
i f e q ( $( ARCH ) , a a r c h 6 4 )
mem_tag_arch_support ?= yes
@ -50,20 +67,67 @@ endif
# Enable the features which are mandatory from ARCH version 8.6 and upwards.
i f e q "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 }
e n d i f
# Enable the features which are mandatory from ARCH version 8.7 and upwards.
i f e q "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 }
e n d i f
# Enable the features which are mandatory from ARCH version 8.8 and upwards.
i f e q "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 }
e n d i f
# Enable the features which are mandatory from ARCH version 8.9 and upwards.
i f e q "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 }
e n d i f
# Enable the features which are mandatory from ARCH version 9.0 and upwards.
i f e q "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 }
e n d i f
# Enable the features which are mandatory from ARCH version 9.1 and upwards.
i f e q "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 }
e n d i f
# Enable the features which are mandatory from ARCH version 9.2 and upwards.
i f e q "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 }
e n d i f
# Enable the features which are mandatory from ARCH version 9.3 and upwards.
i f e q "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 }
e n d i f
# 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.