mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-15 17:14:21 +00:00
refactor(build): reorder platform Makefile evaluation
Commit(f5211420b
refactor(cpufeat): refactor arch feature build
options) ensures mandatory arch features are enabled based on
ARM_ARCH_MAJOR and ARM_ARCH_MINOR, which would be expected to be
provided from platform makefile. However it missed ensuring platform
makefile is included before parsing and enabling any mandatory arch
features.
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
Change-Id: Ia0ccb7d73b2d24c87d3d235babed4704230bec28
This commit is contained in:
parent
113273aac4
commit
3547270f59
2 changed files with 128 additions and 24 deletions
116
Makefile
116
Makefile
|
@ -447,6 +447,96 @@ INCLUDES += -Iinclude \
|
|||
|
||||
include common/backtrace/backtrace.mk
|
||||
|
||||
################################################################################
|
||||
# Generic definitions
|
||||
################################################################################
|
||||
include ${MAKE_HELPERS_DIRECTORY}plat_helpers.mk
|
||||
|
||||
ifeq (${BUILD_BASE},)
|
||||
BUILD_BASE := ./build
|
||||
endif
|
||||
BUILD_PLAT := $(abspath ${BUILD_BASE})/${PLAT}/${BUILD_TYPE}
|
||||
|
||||
SPDS := $(sort $(filter-out none, $(patsubst services/spd/%,%,$(wildcard services/spd/*))))
|
||||
|
||||
# Platforms providing their own TBB makefile may override this value
|
||||
INCLUDE_TBBR_MK := 1
|
||||
|
||||
################################################################################
|
||||
# Include SPD Makefile if one has been specified
|
||||
################################################################################
|
||||
|
||||
ifneq (${SPD},none)
|
||||
ifeq (${ARCH},aarch32)
|
||||
$(error "Error: SPD is incompatible with AArch32.")
|
||||
endif
|
||||
|
||||
ifdef EL3_PAYLOAD_BASE
|
||||
$(warning "SPD and EL3_PAYLOAD_BASE are incompatible build options.")
|
||||
$(warning "The SPD and its BL32 companion will be present but \
|
||||
ignored.")
|
||||
endif
|
||||
|
||||
ifeq (${SPD},spmd)
|
||||
# SPMD is located in std_svc directory
|
||||
SPD_DIR := std_svc
|
||||
|
||||
ifeq ($(SPMD_SPM_AT_SEL2),1)
|
||||
CTX_INCLUDE_EL2_REGS := 1
|
||||
ifeq ($(SPMC_AT_EL3),1)
|
||||
$(error SPM cannot be enabled in both S-EL2 and EL3.)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(findstring optee_sp,$(ARM_SPMC_MANIFEST_DTS)),optee_sp)
|
||||
DTC_CPPFLAGS += -DOPTEE_SP_FW_CONFIG
|
||||
endif
|
||||
|
||||
ifeq ($(TS_SP_FW_CONFIG),1)
|
||||
DTC_CPPFLAGS += -DTS_SP_FW_CONFIG
|
||||
endif
|
||||
|
||||
ifneq ($(ARM_BL2_SP_LIST_DTS),)
|
||||
DTC_CPPFLAGS += -DARM_BL2_SP_LIST_DTS=$(ARM_BL2_SP_LIST_DTS)
|
||||
endif
|
||||
|
||||
ifneq ($(SP_LAYOUT_FILE),)
|
||||
BL2_ENABLE_SP_LOAD := 1
|
||||
endif
|
||||
else
|
||||
# All other SPDs in spd directory
|
||||
SPD_DIR := spd
|
||||
endif #(SPD)
|
||||
|
||||
# We expect to locate an spd.mk under the specified SPD directory
|
||||
SPD_MAKE := $(wildcard services/${SPD_DIR}/${SPD}/${SPD}.mk)
|
||||
|
||||
ifeq (${SPD_MAKE},)
|
||||
$(error Error: No services/${SPD_DIR}/${SPD}/${SPD}.mk located)
|
||||
endif
|
||||
$(info Including ${SPD_MAKE})
|
||||
include ${SPD_MAKE}
|
||||
|
||||
# If there's BL32 companion for the chosen SPD, we expect that the SPD's
|
||||
# Makefile would set NEED_BL32 to "yes". In this case, the build system
|
||||
# supports two mutually exclusive options:
|
||||
# * BL32 is built from source: then BL32_SOURCES must contain the list
|
||||
# of source files to build BL32
|
||||
# * BL32 is a prebuilt binary: then BL32 must point to the image file
|
||||
# that will be included in the FIP
|
||||
# If both BL32_SOURCES and BL32 are defined, the binary takes precedence
|
||||
# over the sources.
|
||||
endif #(SPD=none)
|
||||
|
||||
ifeq (${ENABLE_SPMD_LP}, 1)
|
||||
ifneq (${SPD},spmd)
|
||||
$(error Error: ENABLE_SPMD_LP requires SPD=spmd.)
|
||||
endif
|
||||
ifeq ($(SPMC_AT_EL3),1)
|
||||
$(error SPMC at EL3 not supported when enabling SPMD Logical partitions.)
|
||||
endif
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Process BRANCH_PROTECTION value and set
|
||||
# Pointer Authentication and Branch Target Identification flags
|
||||
|
@ -491,6 +581,18 @@ ifeq (${ENABLE_PAUTH}, 1)
|
|||
BL_COMMON_SOURCES += lib/extensions/pauth/pauth_helpers.S
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Include the platform specific Makefile after the SPD Makefile (the platform
|
||||
# makefile may use all previous definitions in this file)
|
||||
################################################################################
|
||||
include ${PLAT_MAKEFILE_FULL}
|
||||
|
||||
################################################################################
|
||||
# Setup arch_features based on ARM_ARCH_MAJOR, ARM_ARCH_MINOR provided from
|
||||
# platform.
|
||||
################################################################################
|
||||
include ${MAKE_HELPERS_DIRECTORY}arch_features.mk
|
||||
|
||||
####################################################
|
||||
# Enable required options for Memory Stack Tagging.
|
||||
####################################################
|
||||
|
@ -670,12 +772,14 @@ include services/std_svc/rmmd/rmmd.mk
|
|||
$(warning "RME is an experimental feature")
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Include the platform specific Makefile after the SPD Makefile (the platform
|
||||
# makefile may use all previous definitions in this file)
|
||||
################################################################################
|
||||
|
||||
include ${PLAT_MAKEFILE_FULL}
|
||||
ifeq (${CTX_INCLUDE_EL2_REGS}, 1)
|
||||
ifeq (${SPD},none)
|
||||
ifeq (${ENABLE_RME},0)
|
||||
$(error CTX_INCLUDE_EL2_REGS is available only when SPD \
|
||||
or RME is enabled)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Platform specific Makefile might provide us ARCH_MAJOR/MINOR use that to come
|
||||
|
|
|
@ -35,19 +35,6 @@ ENABLE_FEAT_VHE := 0
|
|||
# Enable RAS Support.
|
||||
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
|
||||
#----
|
||||
|
@ -73,11 +60,6 @@ ENABLE_FEAT_RNG := 0
|
|||
# Flag to enable Speculation Barrier Instruction.
|
||||
ENABLE_FEAT_SB := 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
|
||||
#----
|
||||
|
@ -203,6 +185,19 @@ else ifeq (${ARCH},aarch32)
|
|||
endif
|
||||
endif
|
||||
|
||||
#----
|
||||
# 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
|
||||
#----
|
||||
|
@ -243,6 +238,11 @@ 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
|
||||
#----
|
||||
|
|
Loading…
Add table
Reference in a new issue