@ -8,10 +8,62 @@
# and enables them based on the configured architecture version.
# This file follows the following format:
# - By default disable any mandatory features .
# - Then Enable mandatory feature if applicable to an Arch Version .
# - Enable mandatory feature if 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 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
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
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
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
# 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
e n d i f #(ARCH=aarch64)
e n d i f
# 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
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
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
e n d i f
#
################################################################################
# Set mandatory features by default to zero.
@ -23,118 +75,85 @@
#----
# Flag to enable access to Privileged Access Never bit of PSTATE.
ENABLE_FEAT_PAN : = 0
ENABLE_FEAT_PAN ? = 0
# Flag to enable Virtualization Host Extensions.
ENABLE_FEAT_VHE : = 0
ENABLE_FEAT_VHE ? = 0
#----
# 8.2
#----
# Enable RAS Support.
ENABLE_FEAT_RAS := 0
ENABLE_FEAT_RAS ?= 0
#----
# 8.3
#----
# Flag to enable Pointer Authentication. Internal flag not meant for
# direct setting. Use BRANCH_PROTECTION to enable PAUTH.
ENABLE_PAUTH ?= 0
# Include pointer authentication (ARMv8.3-PAuth) registers in cpu context. This
# must be set to 1 if the platform wants to use this feature in the Secure
# world. It is not necessary for use in the Non-secure world.
CTX_INCLUDE_PAUTH_REGS ?= 0
#----
# 8.4
#----
# Flag to enable Secure EL-2 feature.
ENABLE_FEAT_SEL2 := 0
ENABLE_FEAT_SEL2 ? = 0
# By default, disable trace filter control register access to lower non-secure
# exception levels, i.e. NS-EL2, or NS-EL1 if NS-EL2 is implemented, but
# trace filter control register access is unused if FEAT_TRF is implemented.
ENABLE_TRF_FOR_NS := 0
ENABLE_TRF_FOR_NS ? = 0
# Flag to enable Data Independent Timing instructions.
ENABLE_FEAT_DIT : = 0
ENABLE_FEAT_DIT ? = 0
#----
# 8.5
#----
# Flag to enable Branch Target Identification.
# Internal flag not meant for direct setting.
# Use BRANCH_PROTECTION to enable BTI.
ENABLE_BTI ?= 0
# Flag to enable access to the Random Number Generator registers.
ENABLE_FEAT_RNG := 0
ENABLE_FEAT_RNG ? = 0
# Flag to enable Speculation Barrier Instruction.
ENABLE_FEAT_SB := 0
ENABLE_FEAT_SB ? = 0
#----
# 8.6
#----
# Flag to enable access to the CNTPOFF_EL2 register.
ENABLE_FEAT_ECV : = 0
ENABLE_FEAT_ECV ? = 0
# Flag to enable access to the HDFGRTR_EL2 register.
ENABLE_FEAT_FGT : = 0
ENABLE_FEAT_FGT ? = 0
#----
# 8.7
#----
# Flag to enable access to the HCRX_EL2 register by setting SCR_EL3.HXEn.
ENABLE_FEAT_HCX : = 0
ENABLE_FEAT_HCX ? = 0
#----
# 8.9
#----
# Flag to enable access to TCR2 (FEAT_TCR2).
ENABLE_FEAT_TCR2 := 0
#
################################################################################
# Enable Mandatory features based on Arch versions.
################################################################################
#
# 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
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
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
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
# 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
e n d i f #(ARCH=aarch64)
e n d i f
# 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
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
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
e n d i f
ENABLE_FEAT_TCR2 ?= 0
#
################################################################################
@ -185,19 +204,6 @@ else ifeq (${ARCH},aarch32)
endif
e n d i f
#----
# 8.3
#----
# Flag to enable Pointer Authentication. Internal flag not meant for
# direct setting. Use BRANCH_PROTECTION to enable PAUTH.
ENABLE_PAUTH ?= 0
# Include pointer authentication (ARMv8.3-PAuth) registers in cpu context. This
# must be set to 1 if the platform wants to use this feature in the Secure
# world. It is not necessary for use in the Non-secure world.
CTX_INCLUDE_PAUTH_REGS ?= 0
#----
# 8.4
#----
@ -238,11 +244,6 @@ ENABLE_FEAT_RNG_TRAP ?= 0
# enabled at ELX.
CTX_INCLUDE_MTE_REGS ?= 0
# Flag to enable Branch Target Identification.
# Internal flag not meant for direct setting.
# Use BRANCH_PROTECTION to enable BTI.
ENABLE_BTI ?= 0
#----
# 8.6
#----